Calculadora com Histórico
Parte da seção Lógica e Fluxo do Journey de Swift da Coddy — lição 56 de 56.
Desafio
MédioConstrua 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, ouunknownOppara 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=14Experimente 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
1Strings a Fundo
Contagem e ÍndicesCase e TrimBusca em StringsDivisão e JunçãoSubstituindo SubstringsRecapitulação - Verificação de Nome de Usuário4Conjuntos
Criando ConjuntosUnião e InterseçãoSubtração e Diferença SimétricaSubconjunto e SuperconjuntoRecapitulação - Filtro de Tags7Projeto - Monitor de Hábitos
Visão Geral do ProjetoMarcar como Concluído10Projeto - Mecanismo de Quiz
Visão Geral do ProjetoFazer Perguntas2Intervalos e Strides
Fechado vs Meio-AbertoStrideMétodos de IntervaloIntervalos no SwitchRecapitulação - Grade de Calendário5Funções de Ordem Superior Parte 1
MapFilterReduceEncadeando map, filter, reduceRecapitulação - Estatísticas de Palavras