Rechner mit Verlauf
Teil des Abschnitts Logik & Kontrollfluss der Swift-Journey von Coddy — Lektion 56 von 56.
Aufgabe
MittelErstellen Sie einen Taschenrechner, der einen Stream von Ausdrücken verarbeitet, Fehler toleriert und am Ende einen Verlauf pro Operator ausgibt.
Lesen Sie eine einzelne Eingabezeile ein: eine durch Kommas getrennte Liste von a:op:b Ausdrücken. Die Operatoren sind +, -, *, /. Definieren Sie ein Enum CalcError: Error mit den Fällen parse, divideByZero, unknownOp.
Für jeden Ausdruck, in der Reihenfolge:
- Geben Sie
= <n>bei Erfolg aus - Geben Sie
parse,divZerooderunknownOpfür jeden Fehlerfall aus
Geben Sie nach den zeilenweisen Ausdrücken eine Zeile pro Operator aus, der mindestens einmal erfolgreich war, in der festen Reihenfolge +, -, *, /:
<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 TrimmenSuchen in StringsTeilen und ZusammenfügenTeilstrings ersetzenWiederholung – Benutzernamen-Check4Mengen
Mengen erstellenVereinigung und SchnittmengeDifferenz und symmetrische DifferenzTeilmenge und ObermengeRückblick – Tag-Filter7Projekt - Habit Tracker
ProjektübersichtAls erledigt markieren2Bereiche & Schrittweiten
Geschlossen vs. halboffenSchrittweiteRange-MethodenRanges in SwitchRückblick – Kalender-Grid5Funktionen höherer Ordnung Teil 1
MapFilterReduceVerkettung von map, filter, reduceRückblick – Wortstatistiken