Menu
Coddy logo textTech

Итоги — Безопасный калькулятор

Часть раздела Логика и управление потоком путешествия по Ruby на Coddy — урок 47 из 56.

Создайте небольшой калькулятор, который устойчив к некорректному вводу, сочетая в себе raise, несколько блоков rescue и ensure.

challenge icon

Задание

Средне

Определите метод calc(a, op, b), который:

  • Вызывает исключение ArgumentError с сообщением "unknown operator", если op не является одним из +, -, *, /
  • В противном случае выполняет операцию (используйте целочисленную арифметику для /)

Затем прочитайте три строки из ввода: a, op, b и вызовите calc внутри блока begin / rescue / ensure:

  • В случае успеха выведите <a> <op> <b> = <result>
  • При возникновении ArgumentError выведите Bad operator
  • При возникновении ZeroDivisionError выведите Cannot divide by zero
  • В блоке ensure всегда выводите --- end ---

Используйте Integer(...) для парсинга a и b внутри того же блока begin, чтобы нецелочисленный ввод также приводил к выводу Bad operator (ArgumentError охватывает оба случая).

Для ввода 6 / * / 7 вывод будет следующим:

6 * 7 = 42
--- end ---

Для ввода 10 / / / 0:

Cannot divide by zero
--- end ---

Попробуйте сами

# TODO: определить calc(a, op, b), вызывает ArgumentError при неизвестном op

raw_a = gets.chomp
op    = gets.chomp
raw_b = gets.chomp

# TODO: begin/rescue/ensure, как описано

Все уроки раздела Логика и управление потоком