Menu
Coddy logo textTech

Ripasso - Calcolatrice sicura

Fa parte della sezione Logica e flusso del percorso Swift di Coddy. Lezione 48 di 56.

challenge icon

Sfida

Medio

Crea una piccola calcolatrice sicura contro gli input non validi.

Definisci CalcError: Error con i casi: parse, divideByZero, unknownOp.

Definisci una funzione che genera errori compute(_ a: String, _ op: String, _ b: String) throws -> Int che:

  • Analizza a e b come numeri interi, generando .parse se uno dei due non è valido
  • Genera .unknownOp quando op non è uno tra +, -, *, /
  • Genera .divideByZero quando op == "/" e b == 0
  • Altrimenti restituisce il risultato intero

Leggi una singola riga di input: un elenco di espressioni a:op:b separate da virgole. Elaborale nell'ordine con un do/catch. Stampa una riga per ogni espressione:

  • = <n> in caso di successo
  • parse error, div by zero o unknown op per ciascun caso di errore

Dopo le righe per ogni espressione, stampa una riga riepilogativa: OK: <n> con il conteggio delle espressioni completate con successo.

Per l'input 3:+:5,10:/:0,7:*:abc,9:%:2,12:-:4, l'output è:

= 8
div by zero
parse error
unknown op
= 8
OK: 2

Provalo tu

let exprs = readLine()!.components(separatedBy: ",")

// TODO: enum CalcError; func compute(...) throws -> Int;
// loop, do/try, print l'esito per ogni expr; infine print 'OK: <n>'

Tutte le lezioni di Logica e flusso

Esercitati da solo: Playground Swift