Название: Калькулятор
Краткое описание: программа для вычисления значения заданногоарифметического выражения, оперирующая числами с неограниченнойстепенью точности.
Основные затрагиваемые темы: классы, перегрузка операций, конечныеавтоматы, ПОЛИЗ. *это дополнение от меня. Было пожелание от преподавателя использовать токены, MyMath...
Дано: на вход подаётся строка, содержащая арифметическое выражение.
Надо: вычислить значение заданного выражения и вывести его на экран.После вывода программа переходит в режим ожидания ввода следующеговыражения.
Поддерживаемые операции: (реализовать самим!)
+ сложение- вычитание* умножение/ деление- унарный минус
Допустимо требование, что выражение с унарным минусом должно
заключаться в скобки, чтобы не было двух подряд идущих знаковопераций. Например:
3+(-2)
До выполнения вычислений и в процессе вычислений необходимоотлавливать все виды ошибок. Среди них, например:
- Деление на 0
Числовые константы могут быть целыми и дробными. Разделителем целой идробной частей является точка. При наличии дробной части целая можетопускаться. Например:
1 56 3.5 .001
Дополнительно в программе задаётся степень точности вычислений приделении и вычислении значений функций. Указывается число знаков послезапятой, с округлением результата в ближайшую сторону. К примеру,задана точность вычислений - 5 знаков после запятой, тогда результатделения 2 на 3 будет равен:
0.66667
Указание точности необходимо производить после запуска приложения.
Обязательная рекомендация:
1. В программе реализовать класс для работы с числами неограниченнойточности (бесконечно длинными числами). Для класса переопределитьоперации, как минимум:
operator+ сложениеoperator- вычитаниеoperator* умножениеoperator/ деление
2. Преобразовать выражение в список лексем.
3. Организовать конечный автомат для проверки правильности заданного выражения (в начальном виде или для списка лексем).
4. Производить перевод заданного выражения в польскую инверсную запись(ПОЛИЗ).
Программа не должна использовать временных файлов.
Дополнительно (для заинтересованных): расширить список операций и функций на своё усмотрение. К примеру:
% остаток от деления целочисленное делениеctg() котангенсasb() абсолютное значение (модуль)