Menu
Coddy logo textTech

Rechner mit Verlauf

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

challenge icon

Aufgabe

Mittel

Erstellen 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, divZero oder unknownOp fü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=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