Calculadora con historial
Parte de la sección Lógica y Flujo del Journey de Swift de Coddy. Lección 56 de 56.
Desafío
IntermedioConstruye una calculadora que procese un flujo de expresiones, tolere los errores y muestre al final un historial por operador.
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>si tiene éxito - Imprime
parse,divZeroounknownOppara cada caso de error
Después de las líneas correspondientes a cada 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 tuvo éxito ese operador; 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=14Prué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
1Strings a fondo
Conteo e índicesMayúsculas, minúsculas y TrimBúsqueda en StringsDividir y unirReemplazo de subcadenasResumen: Validación de usuario4Conjuntos
Crear conjuntosUnión e intersecciónResta y diferencia simétricaSubconjunto y superconjuntoResumen - Filtro de etiquetas7Proyecto - Seguimiento de hábitos
Descripción general del proyectoMarcar como completado10Proyecto - Motor de cuestionarios
Descripción general del proyectoHacer preguntas2Rangos e Intervalos
Cerrados vs. SemiabiertosSaltos (Stride)Métodos de RangosRangos en SwitchResumen - Cuadrícula de calendario5Funciones de orden superior Pt. 1
MapFilterReduceEncadenar map, filter, reduceResumen - Estadísticas de palabrasPractica por tu cuenta: Playground de Swift