Вы должны написать программу, которая оценивает строку, которая будет введена в расширенный калькулятор.
Программа должна принять ввод с использованием стандартного ввода и вывести правильный ответ. Для языков, которые не имеют функций для приема стандартного ввода, вы можете взять на себя функции readLine
и print
обрабатывать эти задачи.
Требования:
- Не использует какие-либо "eval" функции
- Может обрабатывать числа с плавающей запятой и отрицательные числа
- Поддерживает как минимум операторы +, -, *, / и ^
- Поддерживает скобки и скобки для переопределения нормального порядка
- Может обрабатывать ввод, содержащий один или несколько пробелов между операторами и числами
- Оценивает ввод, используя стандартный порядок операций
Тестовые случаи
вход
10 - 3 + 2
Выход
9
вход
8 + 6 / 3 - 7 + -5 / 2.5
Выход
1
вход
4 + [ ( -3 + 5 ) * 3.5 ] ^ 2 - 12
Выход
41
.0
если они целые? Также: насколько точным должен быть калькулятор (в отношении точности с плавающей запятой и т. Д.)?.0
на конце. Я не слишком уверен в точности, но чем больше, тем лучше.Ответы:
С ++,
640583изрезанный
Мой первый код гольф, так что жду комментариев и критики!
источник
using namespace std
и основная функция не очень хорошо, не так ли?PHP -
394354312 символовОтступ:
источник
Постскриптум, 446
Это использует алгоритм маневрового двора.
Без гольфа и прокомментировал:
TODO : право-ассоциативность возведения в степень
источник
Python 2 ,
339335 байтПопробуйте онлайн!
источник
Постскриптум,
1000695665494Украл идеи от ThomasW.
Добавлена функция: принимает строки с или без пробелов вокруг операторов.[функция удалена]Использование
ARGUMENTS
короче%stdin
, и проще для тестирования, чтобы загрузить!Упростил замену, чтобы просто заменить скобки на скобки.
Код:
Развернулся и прокомментировал:
источник