Menu
Coddy logo textTech

Récapitulatif - Calculatrice sécurisée

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

challenge icon

Défi

Moyen

Construisez une petite calculatrice sécurisée contre les entrées incorrectes.

Définissez CalcError: Error avec les cas : parse, divideByZero, unknownOp.

Définissez une fonction lançant des erreurs compute(_ a: String, _ op: String, _ b: String) throws -> Int qui :

  • Analyse a et b comme des entiers, en lançant .parse si l'un des deux échoue
  • Lance .unknownOp quand op n'est pas l'un des opérateurs +, -, *, /
  • Lance .divideByZero quand op == "/" et b == 0
  • Sinon, retourne le résultat entier

Lisez une seule ligne d'entrée : une liste d'expressions a:op:b séparées par des virgules. Traitez chacune dans l'ordre avec un bloc do/catch. Affichez une ligne par expression :

  • = <n> en cas de succès
  • parse error, div by zero, ou unknown op pour chaque cas d'erreur

Après les lignes par expression, affichez une ligne de résumé : OK: <n> avec le nombre d'expressions ayant réussi.

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

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

Essayez vous-même

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

// TODO: enum CalcError; func compute(...) throws -> Int;
// boucle, do/try, afficher le résultat par expr ; enfin afficher 'OK: <n>'

Toutes les leçons de Logique et Flux