Menu
Coddy logo textTech

Podsumowanie — bezpieczny kalkulator

Część sekcji Logika i przepływ programu ścieżki Ruby w Coddy. Lekcja 47 z 56.

Zbuduj mały kalkulator, który radzi sobie z nieprawidłowymi danymi wejściowymi, łącząc raise, wiele klauzul rescue oraz ensure.

challenge icon

Wyzwanie

Średni

Zdefiniuj metodę calc(a, op, b), która:

  • Zgłasza ArgumentError z komunikatem "unknown operator", jeśli op nie jest jednym z +, -, *, /
  • W przeciwnym razie wykonuje działanie (dla / użyj arytmetyki całkowitoliczbowej)

Następnie odczytaj trzy wiersze wejścia, a, op, b, i wywołaj calc wewnątrz begin / rescue / ensure:

  • W przypadku powodzenia wypisz <a> <op> <b> = <result>
  • W przypadku ArgumentError wypisz Bad operator
  • W przypadku ZeroDivisionError wypisz Cannot divide by zero
  • W ensure zawsze wypisz --- end ---

Użyj Integer(...) do sparsowania a i b w tym samym bloku begin, aby dane wejściowe, które nie są liczbami całkowitymi, również skutkowały wypisaniem Bad operator (ArgumentError obejmuje oba przypadki).

Dla danych wejściowych 6 / * / 7 wynik to:

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

Dla danych wejściowych 10 / / / 0:

Cannot divide by zero
--- end ---

Spróbuj swoich sił

# TODO: zdefiniuj calc(a, op, b), zgłaszaj ArgumentError dla nieznanego op

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

# TODO: użyj begin/rescue/ensure zgodnie z opisem

Wszystkie lekcje w sekcji Logika i przepływ programu

Poćwicz samodzielnie: Kompilator Ruby online