1 / 1 / 0
Регистрация: 12.02.2014
Сообщений: 47
1

Дано бинарное дерево, определить дисциплину с максимальным количеством оценок 5

01.07.2021, 14:11. Показов 1243. Ответов 3

Author24 — интернет-сервис помощи студентам
Не могу разобраться с "проходом" бинарного дерева в поиске необходимых значений. Заранее благодарю за помощь!

Структура дерева и структуры:

C++
1
2
3
4
5
6
7
8
9
10
11
12
struct data_t {
    int id;
    char FIO[STR_SIZE];
    int physics;
    int history;
    int math;
    };
 
struct node_t {
    data_t data;
    node_t* left, * right;
};
Моя попытка решить задачу (естественно, не работает):
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
void my_func(node_t* node) {
    int kol_data_history = 0, kol_data_physics = 0, kol_data_math = 0;
    if (root == NULL) {
        root = node;
    }
    else {
        node_t* tmp = root;
        while (tmp != NULL) {
            if (node->data.id > tmp->data.id) {
                if (tmp->right == NULL) {
                    if (node->data.history == 5) kol_data_history++;
                    else if (node->data.math== 5) kol_data_math++;
                    else if (node->data.physics == 5) kol_data_physics++;
                    tmp->right = node;
                    tmp = NULL;
                }
                else {
                    tmp = tmp->right;
                }
            }
            else {
                if (tmp->left == NULL) {
                    tmp->left = node;
                    tmp = NULL;
                }
                else {
                    tmp = tmp->left;
                }
            }
 
        }
 
        cout << "kol_data_history" << kol_data_history << "kol_data_physics" << kol_data_physics << "kol_data_math" << kol_data_math;
    }
 
    if (root == NULL) {
        cout << "Tree is empty" << endl;
        cout << "Press enter to continue..." << endl;
        cin.get();
        return;
    }
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.07.2021, 14:11
Ответы с готовыми решениями:

Массив: найти дисциплину с максимальным количеством неудовлетворительных оценок
Помогите, пожалуйста, с написанием кода. Итоговая ведомость студентов за семестр содержит сведения...

Дано натуральное число n, которое приобретает значение школьных оценок. Определить соответствующим количеством звуковых
Дано натуральное число n, которое приобретает значение школьных оценок. Определить соответствующим...

Дано натуральное число n, которое приобретает значение школьных оценок. Определить соответствующим количеством звуковых
помогите решить программу

Построить бинарное дерево поиска. Определить уровень узла с максимальным элементом
Из входной последовательности вещественных чисел построить бинарное дерево поиска. Определить...

3
124 / 44 / 15
Регистрация: 01.11.2020
Сообщений: 122
01.07.2021, 14:59 2
Лучший ответ Сообщение было отмечено Slevin_K как решение

Решение

Примерно так

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
void my_func(node_t* node, int & kol_data_history,
int & kol_data_physics ,int & kol_data_math )
 {
    if (node == NULL)
        return;
 
   my_func(node->left, kol_data_history,
kol_data_physics , kol_data_math );
 
    if (node->data.history == 5) kol_data_history++;
    if (node->data.math== 5) kol_data_math++;
    if (node->data.physics == 5) kol_data_physics++;
 
    my_func(node->right, kol_data_history,
kol_data_physics , kol_data_math );
}
 
 
void my_func(node_t * node)
{
 
 int kol_data_history = 0, kol_data_physics = 0, kol_data_math = 0;
 
my_func(node, kol_data_history,
kol_data_physics , kol_data_math );
 
       if (kol_data_history>kol_data_physics && kol_data_history>kol_data_math) {
        cout << "history" << endl;
   } else if (kol_data_physics>kol_data_math) {
        cout << "physics" << endl;
   } else {
        cout << "math" << endl;
   }
    
}
1
1 / 1 / 0
Регистрация: 12.02.2014
Сообщений: 47
01.07.2021, 15:06  [ТС] 3
Большое спасибо!
Только Вы немножко ошиблись в условии последнем, так будет правильно:
C++
1
2
3
4
5
6
7
8
9
10
    
if (kol_data_history > kol_data_physics && kol_data_history > kol_data_math) {
        cout << "history" << endl;
    }
    else if (kol_data_math > kol_data_physics) {
        cout << "math" << endl;
    }
    else {
        cout << "physics" << endl;
}
0
stepForward
01.07.2021, 15:07     Дано бинарное дерево, определить дисциплину с максимальным количеством оценок 5
  #4

Не по теме:

ну да . в блокноте написал. не проверял )

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.07.2021, 15:07

Дано бинарное дерево. Определить путь максимальной длины от корня до листа
Может кто знает, как написать данную программу Дано бинарное дерево. Определить путь максимальной...

Дано дерево (необязательно бинарное). Определить путь минимальной длины от корня до листа
Дано дерево (необязательно бинарное). Определить путь минимальной длины от корня до листа. ...

Дано дерево (необязательно бинарное). Определить путь МАКСимальный длины от корня до листа
Дано дерево (необязательно бинарное). Определить путь максимальной длины от корня до листа. ...

Определить функцию, аргументом которой является дерево. Функция должна вернуть ветвь с максимальным количеством листьев
Ребята,помогите написать программу,я в Лиспе плохо разбираюсь,сформировать программу не могу,а...

Исходное бинарное дерево превратить в бинарное дерево поиска, при этом сохранив его структуру
Помогите, не могу понять!( Нужно исходное бинарное дерево превратить в бинарное дерево поиска, при...

Бинарное дерево. Данные о сотрудниках содержат фамилию и оклад, занести в бинарное дерево поиска
решите. данные о сотрудниках содержат фамилию и оклад (целое число, превышающее 50000). требуется...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru