Menu
Coddy logo textTech

Repaso - Calculadora segura

Parte de la sección Lógica y Flujo del Journey de Swift de Coddy — lección 48 de 56.

challenge icon

Desafío

Intermedio

Construye una pequeña calculadora que sea segura contra entradas incorrectas.

Define CalcError: Error con los casos: parse, divideByZero, unknownOp.

Define una función que lanza errores compute(_ a: String, _ op: String, _ b: String) throws -> Int que:

  • Analice a y b como enteros, lanzando .parse si alguno falla
  • Lance .unknownOp cuando op no sea uno de +, -, *, /
  • Lance .divideByZero cuando op == "/" y b == 0
  • De lo contrario, devuelva el resultado entero

Lee una sola línea de entrada: una lista separada por comas de expresiones a:op:b. Procesa cada una en orden con un bloque do/catch. Imprime una línea por expresión:

  • = <n> en caso de éxito
  • parse error, div by zero, o unknown op para cada caso de error

Después de las líneas por expresión, imprime una línea de resumen: OK: <n> con el recuento de las expresiones que tuvieron éxito.

Para la entrada 3:+:5,10:/:0,7:*:abc,9:%:2,12:-:4, la salida es:

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

Pruébalo tú mismo

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

// TODO: enum CalcError; func compute(...) throws -> Int;
// bucle, do/try, imprimir resultado por expr; finalmente imprimir 'OK: <n>'

Todas las lecciones de Lógica y Flujo