Menu
Coddy logo textTech

Riepilogo - Calcolatrice sicura

Fa parte della sezione Logica e flusso del percorso R di Coddy. Lezione 56 di 64.

challenge icon

Sfida

Difficile

Completa evaluate(expr). Un’espressione è <number> <operator> <number> con spazi attorno all’operatore, ad esempio 8 / 2. Genera errori con stop() per ogni problema, verificandoli in quest’ordine:

  • expected: number operator number quando non ci sono esattamente tre parti
  • '<part>' is not a number per la prima parte numerica che non può essere convertita, ad esempio 'x' is not a number
  • unknown operator <op> quando l’operatore non è +, -, * o /
  • division by zero

Altrimenti restituisci il risultato, arrotondato a quattro cifre decimali con round(value, 4).

Poi completa run_all(exprs): valuta ogni espressione all’interno di tryCatch() e restituisce una riga per espressione, 8 / 2 = 4 oppure 5 / 0 -> error: division by zero.

Il codice fornito passa ogni riga di input a run_all() e stampa ogni riga restituita.

Provalo tu

evaluate <- function(expr) {
  # Scrivi il tuo codice qui
  0
}

run_all <- function(exprs) {
  # Scrivi il tuo codice qui
  character(0)
}

# Codice di input/output fornito: lascialo così com'è
input <- suppressWarnings(readLines(file("stdin")))
cat(run_all(input), sep = "\n")

Tutte le lezioni di Logica e flusso

Esercitati da solo: Compilatore R online