Menu
Coddy logo textTech

Calcolatrice con cronologia

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

challenge icon

Sfida

Medio

Crea una calcolatrice che elabori un flusso di espressioni, gestisca gli errori e alla fine riporti una cronologia per operatore.

Leggi una singola riga di input: un elenco di espressioni a:op:b separate da virgole. Gli operatori sono +, -, *, /. Definisci un enum CalcError: Error con i casi parse, divideByZero, unknownOp.

Per ogni espressione, nell'ordine:

  • Stampa = <n> in caso di successo
  • Stampa parse, divZero oppure unknownOp per ciascun caso di errore

Dopo le righe relative alle singole espressioni, stampa una riga per ogni operatore che ha avuto successo almeno una volta, nell'ordine fisso +, -, *, /:

<op>: count=<n> sum=<total>

count indica quante volte l'operatore ha avuto successo; sum è il totale dei risultati ottenuti con successo.

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

= 8
divZero
= 14
unknownOp
= 8
= 10
+: count=2 sum=18
-: count=1 sum=8
*: count=1 sum=14

Provalo tu

let exprs = readLine()!.components(separatedBy: ",")
let order = ["+", "-", "*", "/"]

// TODO: enum CalcError; func compute(...) throws -> Int;
// esegui un ciclo, do/try, stampa il risultato; crea uno storico per operazione;
// resoconto finale in ordine fisso, solo per le operazioni riuscite

Tutte le lezioni di Logica e flusso

Esercitati da solo: Playground Swift