Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
6 / 5 / 2
Регистрация: 05.10.2021
Сообщений: 380

Функция, которая возвращает адрес нужного элемента в дереве

17.11.2022, 12:02. Показов 1206. Ответов 22
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Функция Search должна возвращать адрес узла, который находится по ключу, чтобы потом информационное поле данного узла перенастроить на другое значение в ф-ии main. Нужный узел программа находит, но потом не работает ничего.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#include <iostream>
struct Node
{
    int data;
    Node* left;
    Node* right;
};
void addTree(Node** b_root, int num) //branch_root
{
    if (!(*b_root))
    {
        Node* ptr = new Node;
        ptr->data = num;
        ptr->left = 0;
        ptr->right = 0;
        *b_root = ptr;
    }
    else if (num < (*b_root)->data) addTree(&((*b_root)->left), num);
    else addTree(&((*b_root)->right), num);
}
void view_CLR(Node* p_root)
{
    if (p_root)
    {
        printf("%i", p_root->data);
        view_CLR(p_root->left);
        view_CLR(p_root->right);
    }
}
Node* Search(Node* ptr, int key)
{
    if (ptr != 0)
    {
        if (ptr->data == key) return ptr;
        Search(ptr->left, key);
        Search(ptr->right, key);
    }
}
int main()
{
    Node* root = 0;
    const int n = 7;
    int mas[n] = { 7,9,5,4,6,0,1 };
    for (int i =0; i< n;i++)addTree(&root, mas[i]);
    view_CLR(root);
    printf("\n\n");
    Node* ptr_main = Search(root, 6);
    ptr_main->data = 8;
    view_CLR(root);
    printf("\n\n");
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
17.11.2022, 12:02
Ответы с готовыми решениями:

Деревья С++ (функция, которая получает указатель на корень дерева и возвращает длину самой длинной ветки на дереве)
Здравствуйте! Помогите, пожалуйста, в написании функции ,которая получает указатель на корень дерева и возвращает длинну самой длинной...

функция, которая на входе получает -адрес, а возвращает запрос (query)
Как правильно написать функцию, которая на входе получает URL-адрес, а возвращает запрос (query)???

Класс Массив: почему функция возвращает адрес элемента, а не его значение?
подскажите, пожалуйста: почему функция возвращает адрес элемента, а не его значение? template &lt;typename T&gt; T...

22
 Аватар для SmallEvil
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
17.11.2022, 12:52
Студворк — интернет-сервис помощи студентам
Unomuno
Моя изначальная позиция была, дать вам понять суть вашей ошибки в коде.
Усвоив ее, позже вы бы ее не повторяли.
Так как вы уперлись рогом и все "стратили", то и сомнительно что усвоили,
Плюс превратили тему в очередную помойную яму.
По причинах,
- что вам видней как код писать (без return же работает)
- что вам нужен только код, а причины ваших ошибок, это проблемы индейцев.
0
6 / 5 / 2
Регистрация: 05.10.2021
Сообщений: 380
17.11.2022, 21:25  [ТС]
Цитата Сообщение от SmallEvil Посмотреть сообщение
Дальнейшие наставления бессмысленны. Человек не готов учится.
Unomuno, функция на ваш "уровень"

C++
1
2
3
4
5
6
7
8
9
10
11
Node* Search(Node* ptr, int key)
{
    Node * res = nullptr;
    if (ptr != 0)
    {
        if (ptr->data == key) return ptr;
        res = Search(ptr->left, key);
        res = res ? res : Search(ptr->right, key);
    }
    return res;
}
Фрагмент кода в main :
C++
1
2
3
    Node* ptr_main = Search(root, 6);
    if (ptr_main)
        ptr_main->data = 8;
Спасибо! Скажите, пожалуйста, а в каких случаях res != res ? Я так понимаю, когда возвращается значение res, то res = res, при каком условии вызывается Search(ptr->right, key)?
0
 Аватар для SmallEvil
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
17.11.2022, 21:55
Цитата Сообщение от Unomuno Посмотреть сообщение
при каком условии вызывается Search(ptr->right, key)?
Если res - NULL, иначе элемент найден, и искать дальше не нужно, просто возвращаем результат "наверх".

Добавлено через 1 минуту
Можно переписать вот так (надеюсь нигде не ошибся)
C++
1
res = ( (res != NULL) ? res : Search(ptr->right, key) );
Добавлено через 2 минуты
Цитата Сообщение от SmallEvil Посмотреть сообщение
NULL
Я всегда использую nullptr.
А тут уже закрутился...
Ну суть понятна ?

Добавлено через 3 минуты
Цитата Сообщение от SmallEvil Посмотреть сообщение
Можно переписать вот так
Или еще понятней :
C++
1
2
if (res == NULL) // элемент еще не найден
   res = Search(ptr->right, key); // продолжаем поиск в правой ветке
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
17.11.2022, 21:55

Функция, которая возвращает адрес минимального среди отрицательных элементов множества
Задано множество из n целых чисел. Число n произвольное. 3. Напишите функцию, которая возвращает адрес минимального среди отрицательных ...

Функция, которая возвращает список булевских значений четности каждого элемента заданного элемента целочисленного списка
Определите рекурсивные функции для решения задачи. НЕ РЕКОМЕНДУЕТСЯ использовать функции высших порядков. Сама задача: Возвращает список...

Функция, которая возвращает индекс элемента
Написать функция, что возвращает индекс элемента, начиная с которого подстрока входит в строку. Спасибо.

Функция, которая возвращает индекс первого элемента
Дан массив, упорядоченный по убыванию { 16, 13, 12, 8,5,4,1,-1,-2,-5}. Написать функцию, которая возвращает индекс первого элемента,...

Функция возвращает адрес , как передать этот адрес другой функции ?
const int max = 5; double * fill_array(double, int); void show_array(const double, double *); // как передать этой функции в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
23
Ответ Создать тему
Новые блоги и статьи
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru