Calcolatrice con cronologia
Fa parte della sezione Logica e flusso del percorso Swift di Coddy. Lezione 56 di 56.
Sfida
MedioCrea 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,divZerooppureunknownOpper 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=14Provalo 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
1Le stringhe in dettaglio
Conteggio e indiciMaiuscole, minuscole e rimozione degli spaziRicerca nelle stringheSuddivisione e unioneSostituzione di sottostringheRiepilogo - Verifica del nome utente4Insiemi
Creare insiemiUnione e intersezioneDifferenza e differenza simmetricaSottoinsieme e sovrainsiemeRiepilogo - Filtro per tag7Progetto - Tracciatore di abitudini
Panoramica del progettoSegna come completato10Progetto - Motore di quiz
Panoramica del progettoPorre domande2Intervalli e passi
Intervalli chiusi e semiapertiPassoMetodi degli intervalliIntervalli in switchRiepilogo - Griglia del calendario5Funzioni di ordine superiore Parte 1
MapFilterReduceConcatenare map, filter e reduceRiepilogo - Statistiche sulle paroleEsercitati da solo: Playground Swift