2 > 4/9
(2 + 3) / (2 — 2)> Ошибка: делить на ноль (5/0) нельзя
2 + 345 + + + + 6> Ошибка: выражение записано неправильно
Чтобы убедиться, что калькулятор работает, напиши сразу же тест, который будет передавать все эти выражения калькулятору, получать ответ, и сравнивать с правильным. И конечно, выводить, чтобы мы могли их видеть. Ну, и как всегда, подсказки для тех, кто сам не догадался:
советую использовать ООП, так как иначе код быстро превратится в лапшу.
сначала выражение надо разбить на набор токенов (отдельных чисел и знаков, без пробелов), а дальше есть 2 варианта:
- с помощью recursive descent parser преобразовать выражение в AST и вычислить
- перевести выражение в обратную польскую нотацию с помощью алгоритма сортировочной станции, и вычислить получившееся выражение
Чтобы дроби не терялись, достаточно при вычислении хранить все числа в виде дробей и делать операции над обеими частями
Сократить дробь вроде
16/8
легко, найдя наибольший общий делитель для двух чисел.