Необходимо реализовать программу, осуществляющую подсчет математических выражений.
Входные данные:
- строка, содержащая математическое выражение (например, 2+2).
Выходные данные:
- результат рассчитанного входного выражения (например, 4) или
оповещение об ошибке, если выражение некорректное.
Требования к входным выражениям:
- поддержка операций: +, -, *, /, ^, %, !
- поддержка функций: log, sqrt, sin, cos, tg, ctg, arcsin, arccos, arctg, arcctg
- поддержка переменных (программа должна автоматически детектировать переменные в выражении и при подсчете спрашивать
пользователя об их значениях). После подсчета выражения с переменными должна присутствовать возможность поменять значения переменных и выполнить повторный расчет выражения. Переменные могут присутствовать в
любой части выражения.
Требования к реализации:
- подсчет должен быть реализован на основе алгоритмов перевода выражения в обратную польскую нотацию и стековой машины
- стек и очередь должны быть реализованы на основе линейных списков
- должны применяться техники оптимального использования динамической памяти