Контест 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), ранний выход при ошибке.

Решите в тренажёре

Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.

Термины по теме