7 - Работа с полиномами (классы Term и Polynomial)

Лабораторная работа 7 для студентов курса “Программирование на основе классов и шаблонов” 2 семестра кафедры ИУ5 МГТУ им Н.Э. Баумана.

Содержание

Цель работы

Начало работы

Зайдите в свою локальную директорию с репозиторием для выполнения лабораторных работ. Заберите ветку с соответствующей лабораторной работой из общего репозитория:

git pull upstream

или

git pull upstream lab_7

Переключитесь на ветку с текущей лабораторной работой:

git checkout lab_7

Свяжите ветку локального репозитория с вашим удаленным репозиторием:

git push --set-upstream origin lab_7

Задание

Написать программу для ввода и обработки полиномов, состоящих из термов. Необходимо реализовать два класса:

ОСТОРОЖНО

В работе запрещено использование контейнеров STL (vector, list и др.).
В данной работе можно использовать самостоятельно разработанный вектор из предыдущей работы.

Ввод полинома

Обратите внимание, что по заданию вы должны уметь работать со строками такого вида:

3x^2 - x^2 -    3x^2 + x ^2 + 5x^5   - 4x^3 +x^2 - 7

Пробелы расставлены в случайном порядке.

Результат разбора такой строки - полином.

В перегрузке оператора ввода необходимо:

При добавлении терма допускается использовать перегрузку сложения полинома с термом.

Для разбора на термы можно использовать самостоятельно разработанный вектор из предыдущей работы или динамический массив.

ОСТОРОЖНО

Запрещено выполнять парсинг отдельного терма внутри класса Polynomial.
Парсинг конкретного терма необходимо делегировать классу Term.
Иными словами, полином должен только детектировать термы в строке.


Класс Term

Общая характеристика

Класс представляет одночлен вида:

ax^n

Поля класса

Методы

Продемонстрируйте работу с классом Term в функции main() отдельно от Polynomial.


Класс Polynomial

Общая характеристика

Полином — это сумма одночленов.

Поля класса

	Term* terms;
    int size;		// фактический размер
    int capacity;	// max выделенная память для массива
	bool order;		// true — по возрастанию, false — по убыванию

Требования

Методы

Операторы

Продемонстрируйте работу с классом Polynomial в функции main().


Важно:

Классы Term и Polynomial должны быть упакованы в отдельную статическую библиотеку.


Требования к оформлению


Контрольные вопросы

  1. Что такое полином?
  2. Как реализовать сложение полиномов?
  3. Зачем нужна перегрузка операторов?
  4. Как избежать дублирования степеней?
  5. Как реализовать умножение полиномов?
  6. Как организован разбор строки на термы?