Выражения содержат только целые положительные числа, операторы и круглые скобки.
Допустимые операторы в выражении:
Операторы не имеют приоритетов, приоритеты задаются круглыми скобками.
Таким образом, результатом выражения 1+((2+3)*(4*5)) будет 101, а выражения 2+((2*3)/(4^5)) будет 2.
Основное задание
Создайте и опишите класс Interpreter
interpreter = Interpreter('1 + ((2 + 3) * (4 * 5))') print(interpreter.evaluate())
101
interpreter = Interpreter('10 + ((122 + 3) * (14 * 5))') print(interpreter.evaluate())
8760
Начните с выражений, в которых нет пробелов и используются только цифры от 0 до 9, то есть (2+3). Когда ваш интерпретатор будет работать, то добавьте возможность использования пробелов и чисел больше 9, то есть (2 + 123)
Для удобства вычисления, после приёма выражения, окружите его круглыми скобками. То есть выражение 2 * (3 + 4) превратить в (2 * 3 + 4)).
Для вычисления выражения вам надо создать два стека: для чисел и операторов. Продвигаясь по коду:
Ваша программа не должна упасть из-за ошибок! В случае ошибок пользователь должен получить соответствующее сообщение, поэтому не забудьте проверить выражение на сбалансированность скобок.
к предыдущей теме к следующему разделу
| Гарантия на работу | 1 год |
| Средний балл | 4.52 |
| Стоимость | Назначаете сами |
| Эксперт | Выбираете сами |
| Уникальность работы | от 70% |