Menu
Coddy logo textTech

Zusammenfassung – Sicherer Rechner

Teil des Abschnitts Logik und Ablaufsteuerung der R-Journey von Coddy. Lektion 56 von 64.

challenge icon

Aufgabe

Schwer

Vervollständige evaluate(expr). Ein Ausdruck ist <number> <operator> <number> mit Leerzeichen um den Operator, zum Beispiel 8 / 2. Löse bei jedem Problem mit stop() einen Fehler aus, wobei diese Reihenfolge eingehalten wird:

  • expected: number operator number, wenn es nicht genau drei Teile gibt
  • '<part>' is not a number für den ersten Zahlenteil, der nicht konvertiert werden kann, zum Beispiel 'x' is not a number
  • unknown operator <op>, wenn der Operator nicht +, -, * oder / ist
  • division by zero

Gib andernfalls das Ergebnis zurück, auf vier Dezimalstellen gerundet mit round(value, 4).

Vervollständige anschließend run_all(exprs): Werte jeden Ausdruck innerhalb von tryCatch() aus und gib eine Zeile pro Ausdruck zurück, 8 / 2 = 4 oder 5 / 0 -> error: division by zero.

Der bereitgestellte Code übergibt jede Eingabezeile an run_all() und gibt jede zurückgegebene Zeile aus.

Probier es selbst

evaluate <- function(expr) {
  # Schreibe deinen Code hier
  0
}

run_all <- function(exprs) {
  # Schreibe deinen Code hier
  character(0)
}

# Mitgelieferter Ein-/Ausgabecode: belasse ihn unverändert
input <- suppressWarnings(readLines(file("stdin")))
cat(run_all(input), sep = "\n")

Alle Lektionen in Logik und Ablaufsteuerung

Übe selbstständig: Online-R-Compiler