- Мортина Анастасия
- Мамаева Ольга
- Лупша Егор
- Косарев Егор
- Шушпанов Никита
В рамках лабораторной работы ставится задача создания программных средств, поддерживающих реализацию шести видов таблиц, предназначенных для эффектривного хранения полинома, его имени и ссылки на объект соответсвующего класса:
- неупорядоченные таблицы:
- Линейная таблица на массиве;
- Линейная таблица на списке;
- упорядоенные таблицы:
- Таблица на поисковом дереве (АВЛ или красно-черном);
- Таблица на массиве;
- хеш-таблицы:
- Хеш-таблица с открытым перемешиванием;
- Хеш-таблица со списками (метод цепочек).
В рамках лабораторной работы также реализовать выполнение следующих операций над полиномами:
- ввод полинома и его имени;
- организация хранения полинома;
- удаление введенного ранее полинома;
- сложение;
- вычитание;
- умножение;
- деление;
- нахождение производной при заданной переменной дифференцирования;
- нахождение неопределенного интеграла;
- вычисление значения полинома при заданных значениях переменных;
- вывод полиномов и результата операций;
- возможность получения выражения из полиномов.
В каждой таблице должна быть возможность удаления, добавления и поиска полинома по имени. Удаление и добавление полинома должно происходить сразу во всех таблицах, поиск же должен осуществляться только в активной таблице. Данные операции над таблицами реализовать, как виртуальные методы.
В процессе выполнения лабораторной работы требуется использовать систему контроля версий [Git][git] и фрэймворк для разработки автоматических тестов [Google Test][gtest].
При выполнении лабораторной работы нужно учитывать следующие основные условия:
- разработака структуры хранения должна быть реализована в виде различных таблиц и ориентирована на представление полиномов от трех переменнных;
- степени переменных полиномов не могут превышать значение 9;
- в структуре хранения должны находиться мономы только с ненулевыми коэффициентами;
- для организации быстрого доступа использовать упорядоченное хранение мономов (лексикографический порядок);
- имя полинома должно быть уникально.
Для реализации программы будут использованы такие основные объекты, как:
- таблицы:
- линейная на массиве;
- линейная на списке;
- упорядоченная на массиве;
- на поисковом дереве (АВЛ или красно-черном);
- хеш таблица с открытым перемешиванием;
- хеш таблица со списками (метод цепочек).
- список;
- моном;
- полином.
Для работы с полиномами будут необходимы такие алгоритмы, как:
- сложение;
- вычитание;
- умножение;
- дифференцирование;
- интегрирование;
- вычисление в точке.
Для работы с таблицами понадобятся алгоритмы:
- вставка;
- удаление;
- поиск;
- сортировка(для упорядоченных);
- запись/чтение в файл.
Структура проекта:
gtest
— библиотека Google Test с модульными тестами.base
— директория для размещения заголовочных файлов и тестового приложения.README.md
— информация о проекте, которую вы сейчас читаете.- Служебные файлы:
.gitignore
— перечень расширений файлов, игнорируемых Git при добавлении файлов в репозиторий.
- Система контроля версий [Git][git].
- Фреймворк для написания автоматических тестов [Google Test][gtest].
- Среда разработки Microsoft Visual Studio 2019.