Menu
Coddy logo textTech

Calculatrice avec historique

Fait partie de la section Logique et Flux du Journey Swift de Coddy — leçon 56 sur 56.

challenge icon

Défi

Moyen

Construisez une calculatrice qui traite un flux d'expressions, tolère les erreurs et affiche un historique par opérateur à la fin.

Lisez une seule ligne d'entrée : une liste séparée par des virgules d'expressions au format a:op:b. Les opérateurs sont +, -, *, /. Définissez une énumération CalcError: Error avec les cas parse, divideByZero, unknownOp.

Pour chaque expression, dans l'ordre :

  • Affichez = <n> en cas de succès
  • Affichez parse, divZero, ou unknownOp pour chaque cas d'erreur

Après les lignes par expression, affichez une ligne par opérateur ayant réussi au moins une fois, dans l'ordre fixe +, -, *, / :

<op>: count=<n> sum=<total>

count est le nombre de fois où cet opérateur a réussi ; sum est le total de ces résultats réussis.

Pour l'entrée 3:+:5,10:/:0,7:*:2,9:%:2,12:-:4,8:+:2, la sortie est :

= 8
divZero
= 14
unknownOp
= 8
= 10
+: count=2 sum=18
-: count=1 sum=8
*: count=1 sum=14

Essayez vous-même

let exprs = readLine()!.components(separatedBy: ",")
let order = ["+", "-", "*", "/"]

// TODO: enum CalcError; func compute(...) throws -> Int;
// boucle, do/try, afficher le résultat; construire l'historique par opération;
// rapport final dans l'ordre fixe, seulement les opérations qui ont réussi

Toutes les leçons de Logique et Flux