Цель работы: Разработать программу, выполняющую арифметические операции с полиномами трех переменных (x, y и z): сложение, вычитание, умножение на константу, умножение двух полиномов. Считается, что полином составлен из мономов от трех переменных с ограничением на степень каждой переменой от 0 до 9 (Опцианально можно расширить данное ограничение). Коэффициенты полинома - вещественные числа. Работоспособность программы необходимо проверить с помощью Google Test-ов. Кроме того, необходимо разработать пользовательское консольное приложение.
Особенности реализации:
- В качестве структуры хранения полинома использовать список мономов с ненулевыми коэффициентами (односвязный или двухсвязный). Односвязный список удобнее реализовать с фиктивной головой. Элементы списка хранить упорядоченными.
- Степень полинома хранить в "свернутом" виде, т. е. степень должна быть представлена как трехзначное число, где число сотен – это степень при переменной “x”, число десятков - степень при переменной “y”, число единиц - степень при переменной “z”.
- Сложение полиномов осуществлять алгоритмом слияния упорядоченных массивов.
- Вычитание полиномов допускается выполнять через сложение с умножением на константу (C = A - B = A + (-1)*B)
- При умножении и сложение (вычитание) необходимо следить, чтобы в итоговом полиноме были приведены подобные слагаемые и не хранилось мономов с нулевым коэффициентом.
- Если при умножении полиномов полученные степени переменных больше 9, выводить сообщение об ошибке.
- Считывание полинома у пользователя допускается в любом удобном для вас виде. Необходимо предоставить пользователю правила ввода данных
- Следует учесть, что пользователь может вводить полином, не упорядочив в нем мономы.
- Необходимо добавить свои файлы с реализацией программы (см. Общай структура проекта)
- Система контроля версий Git. Рекомендуется использовать один из следующих клиентов на выбор студента:
- Фреймворк для написания автоматических тестов Google Test. Не требует установки, идет вместе с проектом-шаблоном.
Структура проекта:
gtest— библиотека Google Test.samples— каталог с пользовательским приложением (Необходимо создать собственный файл кода).test— каталог с проектом с модульными тестами (Необходимо создать собственные файлы с тестами).includesrc- каталоги с основными файлами ЛР (Необходимо создать собственные файлы кода).sln- каталог с файлами с решениями (solution) для Microsoft Visual Studio (Необходимо добавить настроенный проект).README.md— информация о проекте, которую вы сейчас читаете.- Служебные файлы
.gitignore— перечень расширений файлов, игнорируемых Git при добавлении файлов в репозиторий.