Контест Middle Ошибки, defer, panic и recover обновлено

Калькулятор int64 с ошибками вместо паник на Go

Условие

Вычислите выражения a op b над int64, где op один из + - * / %. Деление целочисленное с отбрасыванием дробной части к нулю, остаток имеет знак делимого (как в Go).

Ошибки проверяются по порядку:

  1. неизвестная операция: error: unknown op;
  2. a или b не является целым числом из диапазона int64 (допустим знак + или -, затем только цифры): error: bad number;
  3. деление или остаток на ноль: error: division by zero;
  4. результат не помещается в int64: error: overflow.

Ввод: n (1 ≤ n ≤ 1000), затем n строк из трёх токенов.

Вывод: результат или ошибка на каждую строку.

Пример

5
7 + 5
7 / 2
-7 % 2
1 / 0
2 ^ 3
12
3
-1
error: division by zero
error: unknown op

Как подойти

ParseInt для разбора, явные проверки деления на ноль и переполнения до вычисления.

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

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

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