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

Crie 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, na ordem:

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

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

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

count é a quantidade de vezes que o operador obteve 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

Pratique por conta própria: Playground de Swift