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

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