Menu
Coddy logo textTech

Zusammenfassung – Sicherer Taschenrechner

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

challenge icon

Aufgabe

Mittel

Baue einen winzigen Taschenrechner, der sicher gegen fehlerhafte Eingaben ist.

Definiere CalcError: Error mit den Fällen: parse, divideByZero, unknownOp.

Definiere eine throwing function compute(_ a: String, _ op: String, _ b: String) throws -> Int, die:

  • a und b als Integer parst und .parse wirft, falls einer von beiden fehlschlägt
  • .unknownOp wirft, wenn op nicht eines von +, -, *, / ist
  • .divideByZero wirft, wenn op == "/" und b == 0 ist
  • Andernfalls das ganzzahlige Ergebnis zurückgibt

Lies eine einzelne Eingabezeile: eine durch Kommata getrennte Liste von a:op:b Ausdrücken. Verarbeite jeden nacheinander mit einem do/catch. Gib pro Ausdruck eine Zeile aus:

  • = <n> bei Erfolg
  • parse error, div by zero oder unknown op für jeden Fehlerfall

Gib nach den zeilenweisen Ausdrücken eine Zusammenfassungszeile aus: OK: <n> mit der Anzahl der erfolgreich verarbeiteten Ausdrücke.

Für die Eingabe 3:+:5,10:/:0,7:*:abc,9:%:2,12:-:4 lautet die Ausgabe:

= 8
div by zero
parse error
unknown op
= 8
OK: 2

Probier es selbst

let exprs = readLine()!.components(separatedBy: ",")

// TODO: enum CalcError; func compute(...) throws -> Int;
// Schleife, do/try, Ergebnis pro Ausdruck ausgeben; am Ende 'OK: <n>' ausgeben

Alle Lektionen in Logik & Kontrollfluss