Menu
Coddy logo textTech

Podsumowanie – bezpieczny kalkulator

Część sekcji Logika i przepływ sterowania ścieżki R w Coddy. Lekcja 56 z 64.

challenge icon

Wyzwanie

Trudny

Uzupełnij evaluate(expr). Wyrażenie ma postać <number> <operator> <number>, ze spacjami wokół operatora, na przykład 8 / 2. Zgłaszaj błędy za pomocą stop() dla każdego problemu, sprawdzając je w tej kolejności:

  • expected: number operator number, gdy nie ma dokładnie trzech części
  • '<part>' is not a number dla pierwszej części liczbowej, której nie można przekonwertować, na przykład 'x' is not a number
  • unknown operator <op>, gdy operatorem nie jest +, -, * ani /
  • division by zero

W przeciwnym razie zwróć wynik zaokrąglony do czterech miejsc po przecinku za pomocą round(value, 4).

Następnie uzupełnij run_all(exprs): oblicz każde wyrażenie wewnątrz tryCatch() i zwróć jeden wiersz dla każdego wyrażenia, 8 / 2 = 4 lub 5 / 0 -> error: division by zero.

Dostarczony kod przekazuje każdy wiersz wejściowy do run_all() i wyświetla każdy zwrócony wiersz.

Spróbuj swoich sił

evaluate <- function(expr) {
  # Wpisz tutaj swój kod
  0
}

run_all <- function(exprs) {
  # Wpisz tutaj swój kod
  character(0)
}

# Dostarczony kod wejścia/wyjścia: pozostaw go bez zmian
input <- suppressWarnings(readLines(file("stdin")))
cat(run_all(input), sep = "\n")

Wszystkie lekcje w sekcji Logika i przepływ sterowania

Poćwicz samodzielnie: Kompilator R online