Задание
Разработанный визуализатор должен обеспечивать: наглядную графическую иллюстрацию всех особенностей работы алгоритма; вывод пояснения к каждому шагу алгоритма; работу в пошаговом и автоматическом режиме; регулировку скорости автоматического выполнения; возможность отката на любое количество шагов назад; работу как с предварительно заданными, так и со случайными и введёнными пользователем данными; корректную обработку частных и вырожденных случаев
Функционал программы
- Построение дерева отрезков (по введенным пользователем значениям или рандомно)
- Выбор типа дерева (минимум, максимум, сумма)
- Пошаговая визуализация работы алгоритма в ручном и автоматическом режимах
- Трассировка работы алгоритма с описанием каждого шага
Содержание отчета к программе
ВВЕДЕНИЕ
1. Изучение и анализ заданного алгоритма или структуры данных
1.1. Историческая справка
1.2. Описание работы алгоритма
1.3. Доказательство корректности алгоритма
1.4. Описание входных данных, для которых применим алгоритм или структура данных
1.5. Анализ требований к памяти
1.6. Сравнение с аналогами
1.7. Примеры практических задач, где может использоваться данный алгоритм
2. Разработка визуализатора
2.1. Выбор средств разработки
2.2. Проектирование интерфейса пользователя
2.3. Проектирование модулей и классов
2.4. Разработка алгоритмов и структур данных для прямой пошаговой визуализации и выполнения отката
2.5. Особенности программной реализации
2.6. Тестирование разработанного визуализатора
ЗАКЛЮЧЕНИЕ
СПИСОК ЛИТЕРАТУРЫ И ИНТЕРНЕТ-РЕСУРСОВ
Фрагмент программного кода
#ifndef TREENODE_H #define TREENODE_H #include <QPaintDevice> #include <QPainter> #include <QPoint> #include <QFont> #include <QBrush> #include <QPen> // Класс узла дерева class TreeNode { public: // Значение int value = 0; // Координаты QPoint location; // Индексы int index = -1, l = -1, r = -1; // Переменные, отвечающие за цвет отрисовки узла при визуализации // selected - синий // answer - зеленый // error - красный (тут имеется в виду, что узел не входит в запрашиваемый отрезок) bool selected = false, answer = false, error = false; // Конструктор TreeNode(); // ф-ция отрисовки void draw(QPaintDevice *pd); // номер уровня дерева, на котором данный узел находится int layer(); }; #endif // TREENODE_H
Скриншот архива с проектом
Пояснения по запуску программы
C++ Qt 5.0, компилятор MinGW
shogun