Представить таблицу в виде бинарного дерева, элементами которого являются строки таблицы.
Таблица 2 – Список студентов
№ | Фамилия студента | Оценки | ||
Физика | История | Математика | ||
Написать программу, содержащую следующие функции:
– создание дерева (ввод данных с клавиатуры);
– просмотр дерева (вывод данных в табличном виде);
– отображение дерева (вывод структуры дерева);
– добавление нового элемента в дерево;
– сохранение данных в файл;
– загрузка данных из файла и создание бинарного дерева на их основе;
– удаление всех элементов дерева (!!!).
Оформить работу программы в виде меню. Каждый пункт меню отвечает одной из функций, перечисленных выше. Дополнить свою работу функцией по варианту задания. Предусмотреть все проверки!
Вариант 1
Написать функцию подсчета узлов дерева (вершина, у которой есть дочерние элементы).
Вариант 2
Написать функцию подсчета листьев дерева (вершина, у которой нет дочерних элементов).
Вариант 3
Написать функцию подсчета вершин, у которых есть только один потомок.
Вариант 4
Написать функцию подсчета количества отличников.
Вариант 5
Написать функцию поиска студента Иванова в дереве. Если такого студента нет – вывести сообщение.
Вариант 6
Написать функцию подсчета количества студентов с оценкой 3 по физике.
Вариант 7
Написать функцию подсчета количества элементов на заданном уровне.
Вариант 8
Написать функцию, определяющую дисциплину с максимальным количеством оценок 5.
Вариант 9
Написать функцию, которая ищет студента с максимальным средним баллом.
Вариант 10
Написать функцию, которая считает количество переходов от корневой вершины до вершины со введенной фамилией.
Реализация динамического интерфейса
Для заданий №4 и №5 необходимо модифицировать программу таким образом, чтобы интерфейс программы стал интерактивным, т.е. необходимый пункт меню выбирался с помощью управляющих клавиш (стрелочки) и запускался на выполнение нажатием клавиши Enter. Текущий пункт меню можно выделять подсветкой цветом или с помощью некоего «курсора» – вспомогательного символа, служащего для этой цели (например, символ * или =>).
Подсказка: реализация через бесконечный цикл, использовать функцию getch(), код символов в таблице ниже.
Таблица 3 – Код клавиш
клавиша | Код |
Enter | 13 |
Escape | 27 |
Стрелочка вверх | 72 |
Стрелочка вниз | 80 |
Стрелочка вправо | 77 |
Стрелочка влево | 75 |