Контест Junior Ошибки, defer, panic и recover обновлено
Калькулятор обратной польской записи с ошибками на Go
Условие
Вычислите выражения в обратной польской записи. Токены: целые числа (возможно с минусом) и операции + - * / (деление целочисленное к нулю). Промежуточные значения помещаются в int64.
Ошибки (выводится первая встреченная при чтении слева направо):
- токен не число и не операция:
error: unknown token <токен>; - операции не хватает операндов:
error: stack underflow; - деление на ноль:
error: division by zero; - после всех токенов в стеке не одно число:
error: bad expression.
Ввод: n (1 ≤ n ≤ 1000), затем n непустых строк-выражений.
Вывод: результат или ошибка на каждую строку.
Пример
4
3 4 + 2 *
5 1 2 + 4 * + 3 -
2 +
4 0 /
14
14
error: stack underflow
error: division by zero
Как подойти
Стек на слайсе, eval возвращает (int64, error), ранний выход при ошибке.
Решите в тренажёре
Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.
Предыдущий вопрос
Валидация конфигурации со сбором всех ошибок на Go
Следующий вопрос
Калькулятор int64 с ошибками вместо паник на Go