Menu
Coddy logo textTech

Calculadora com Histórico

Parte da seção Lógica e Fluxo do Journey de Swift da Coddy — lição 56 de 56.

challenge icon

Desafio

Médio

Construa uma calculadora que processe um fluxo de expressões, tolere erros e relate um histórico por operador ao final.

Leia uma única linha de entrada: uma lista separada por vírgulas de expressões a:op:b. Os operadores são +, -, *, /. Defina um enum CalcError: Error com os casos parse, divideByZero, unknownOp.

Para cada expressão, em ordem:

  • Imprima = <n> em caso de sucesso
  • Imprima parse, divZero, ou unknownOp para cada caso de erro

Após as linhas por expressão, imprima uma linha para cada operador que teve sucesso pelo menos uma vez, na ordem fixa +, -, *, /:

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

count é a quantidade de vezes que aquele operador teve sucesso; sum é o total desses resultados bem-sucedidos.

Para a entrada 3:+:5,10:/:0,7:*:2,9:%:2,12:-:4,8:+:2, a saída é:

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

Experimente você mesmo

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

// TODO: enum CalcError; func compute(...) throws -> Int;
// loop, do/try, imprimir resultado; construir histórico por operação;
// relatório final em ordem fixa, apenas operações que tiveram sucesso

Todas as lições de Lógica e Fluxo