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

Entraînez-vous par vous-même : Playground Swift