Menu
Coddy logo textTech

Repaso: calculadora segura

Parte de la sección Lógica y flujo del Journey de R de Coddy. Lección 56 de 64.

challenge icon

Desafío

Difícil

Completa evaluate(expr). Una expresión tiene el formato <number> <operator> <number>, con espacios alrededor del operador, como 8 / 2. Genera errores con stop() para cada problema, comprobándolos en este orden:

  • expected: number operator number cuando no hay exactamente tres partes
  • '<part>' is not a number para la primera parte numérica que no se pueda convertir, como 'x' is not a number
  • unknown operator <op> cuando el operador no sea +, -, * o /
  • division by zero

De lo contrario, devuelve el resultado, redondeado a cuatro decimales con round(value, 4).

Después, completa run_all(exprs): evalúa cada expresión dentro de tryCatch() y devuelve una línea por expresión, 8 / 2 = 4 o 5 / 0 -> error: division by zero.

El código proporcionado pasa cada línea de entrada a run_all() e imprime cada línea devuelta.

Pruébalo tú mismo

evaluate <- function(expr) {
  # Escribe tu código aquí
  0
}

run_all <- function(exprs) {
  # Escribe tu código aquí
  character(0)
}

# Código de entrada/salida suministrado: déjalo como está
input <- suppressWarnings(readLines(file("stdin")))
cat(run_all(input), sep = "\n")

Todas las lecciones de Lógica y flujo

Practica por tu cuenta: Compilador de R online