Menu
Coddy logo textTech

Récapitulatif - Calculatrice sécurisée

Fait partie de la section Logique et flux d’exécution du Journey R de Coddy. Leçon 56 sur 64.

challenge icon

Défi

Difficile

Complétez evaluate(expr). Une expression est de la forme <number> <operator> <number>, avec des espaces autour de l’opérateur, par exemple 8 / 2. Levez des erreurs avec stop() pour chaque problème, en les vérifiant dans cet ordre :

  • expected: number operator number lorsqu’il n’y a pas exactement trois parties
  • '<part>' is not a number pour la première partie correspondant à un nombre qui ne peut pas être convertie, par exemple 'x' is not a number
  • unknown operator <op> lorsque l’opérateur n’est pas +, -, * ou /
  • division by zero

Sinon, renvoyez le résultat, arrondi à quatre décimales avec round(value, 4).

Complétez ensuite run_all(exprs) : évaluez chaque expression dans tryCatch() et renvoyez une ligne par expression, 8 / 2 = 4 ou 5 / 0 -> error: division by zero.

Le code fourni transmet chaque ligne d’entrée à run_all() et affiche chaque ligne renvoyée.

Essayez vous-même

evaluate <- function(expr) {
  # Écrivez votre code ici
  0
}

run_all <- function(exprs) {
  # Écrivez votre code ici
  character(0)
}

# Code d'entrée/sortie fourni : gardez-le tel quel
input <- suppressWarnings(readLines(file("stdin")))
cat(run_all(input), sep = "\n")

Toutes les leçons de Logique et flux d’exécution

Entraînez-vous par vous-même : Compilateur R en ligne