Menu
Coddy logo textTech

Taschenrechner mit Verlauf

Teil des Abschnitts Logik & Kontrollfluss der Swift-Journey von Coddy. Lektion 56 von 56.

challenge icon

Aufgabe

Mittel

Erstelle 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, divZero oder unknownOp aus

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=14

Probier 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

Übe selbstständig: Swift-Playground