Menu
Coddy logo textTech

Повторение — безопасный калькулятор

Часть раздела Логика и потоки выполнения путешествия по R на Coddy. Урок 56 из 64.

challenge icon

Задание

Сложно

Завершите evaluate(expr). Выражение имеет вид <number> <operator> <number> с пробелами вокруг оператора, например 8 / 2. Для каждой проблемы вызывайте stop(), проверяя их в следующем порядке:

  • expected: number operator number, если частей не ровно три
  • '<part>' is not a number для первой числовой части, которую невозможно преобразовать, например 'x' is not a number
  • unknown operator <op>, если оператором не является +, -, * или /
  • division by zero

В противном случае верните результат, округлённый до четырёх знаков после запятой с помощью round(value, 4).

Затем завершите run_all(exprs): вычислите каждое выражение внутри tryCatch() и верните по одной строке для каждого выражения: 8 / 2 = 4 или 5 / 0 -> error: division by zero.

Предоставленный код передаёт каждую входную строку в run_all() и выводит каждую возвращённую строку.

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

evaluate <- function(expr) {
  # Напишите ваш код здесь
  0
}

run_all <- function(exprs) {
  # Напишите ваш код здесь
  character(0)
}

# Предоставленный код ввода/вывода: оставьте его как есть
input <- suppressWarnings(readLines(file("stdin")))
cat(run_all(input), sep = "\n")

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

Потренируйтесь самостоятельно: Онлайн-компилятор R