Taschenrechner mit Verlauf
Teil des Abschnitts Logik & Kontrollfluss der Swift-Journey von Coddy. Lektion 56 von 56.
Aufgabe
MittelErstelle einen Taschenrechner, der einen Datenstrom von Ausdrücken verarbeitet, Fehler toleriert und am Ende einen Verlauf pro Operator ausgibt.
Lies eine einzelne Eingabezeile ein: eine durch Kommas getrennte Liste von a:op:b-Ausdrücken. Die Operatoren sind +, -, *, /. Definiere ein enum CalcError: Error mit den Fällen parse, divideByZero, unknownOp.
Für jeden Ausdruck, der Reihe nach:
- Gib bei Erfolg
= <n>aus - Gib für jeden Fehlerfall
parse,divZerooderunknownOpaus
Gib nach den Zeilen für die einzelnen Ausdrücke für jeden Operator, der mindestens einmal erfolgreich war, eine Zeile in der festen Reihenfolge +, -, *, / aus:
<op>: count=<n> sum=<total>count gibt an, wie oft dieser Operator erfolgreich war; sum ist die Summe dieser erfolgreichen Ergebnisse.
Für die Eingabe 3:+:5,10:/:0,7:*:2,9:%:2,12:-:4,8:+:2 lautet die Ausgabe:
= 8
divZero
= 14
unknownOp
= 8
= 10
+: count=2 sum=18
-: count=1 sum=8
*: count=1 sum=14Probier es selbst
let exprs = readLine()!.components(separatedBy: ",")
let order = ["+", "-", "*", "/"]
// TODO: enum CalcError; func compute(...) throws -> Int;
// Schleife, do/try, Ergebnis ausgeben; Verlauf pro Operator erstellen;
// Abschlussbericht in fester Reihenfolge, nur erfolgreiche Operatoren
Alle Lektionen in Logik & Kontrollfluss
1Strings im Detail
Zählen und IndizesGroß-/Kleinschreibung und TrimSuchen in StringsAufteilen und ZusammenfügenTeilstrings ersetzenRückblick – Benutzernamen prüfen4Mengen
Mengen erstellenVereinigung und SchnittmengeSubtraktion und symmetrische DifferenzTeilmenge und ObermengeWiederholung – Tag-Filter7Projekt – Gewohnheitstracker
ProjektübersichtAls erledigt markieren2Bereiche & Schrittweiten
Geschlossen vs. halboffenSchrittweiteBereichsmethodenBereiche in SwitchRückblick – Kalender-Raster5Funktionen höherer Ordnung Teil 1
MapFilterReduceVerketten von Map, Filter und ReduceRückblick – WortstatistikÜbe selbstständig: Swift-Playground