Menu
Coddy logo textTech

Calculadora con historial

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

challenge icon

Desafío

Intermedio

Construye una calculadora que procese un flujo de expresiones, tolere errores e informe un historial por operador al final.

Lee una sola línea de entrada: una lista separada por comas de expresiones a:op:b. Los operadores son +, -, *, /. Define un enum CalcError: Error con los casos parse, divideByZero, unknownOp.

Para cada expresión, en orden:

  • Imprime = <n> en caso de éxito
  • Imprime parse, divZero, o unknownOp para cada caso de error

Después de las líneas por expresión, imprime una línea por cada operador que haya tenido éxito al menos una vez, en el orden fijo +, -, *, /:

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

count es cuántas veces ese operador tuvo éxito; sum es el total de esos resultados exitosos.

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

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

Pruébalo tú mismo

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

// TODO: enum CalcError; func compute(...) throws -> Int;
// bucle, do/try, imprimir resultado; construir historial por operación;
// informe final en orden fijo, solo operaciones que tuvieron éxito

Todas las lecciones de Lógica y Flujo