Menu
Coddy logo textTech

Recapitulação - Calculadora Segura

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

challenge icon

Desafio

Médio

Construa uma pequena calculadora que seja segura contra entradas inválidas.

Defina CalcError: Error com os casos: parse, divideByZero, unknownOp.

Defina uma função que lança erros compute(_ a: String, _ op: String, _ b: String) throws -> Int que:

  • Analisa a e b como inteiros, lançando .parse se algum deles falhar
  • Lança .unknownOp quando op não for um de +, -, *, /
  • Lança .divideByZero quando op == "/" e b == 0
  • Caso contrário, retorna o resultado inteiro

Leia uma única linha de entrada: uma lista separada por vírgulas de expressões a:op:b. Processe cada uma em ordem com um do/catch. Imprima uma linha por expressão:

  • = <n> em caso de sucesso
  • parse error, div by zero, ou unknown op para cada caso de erro

Após as linhas por expressão, imprima uma linha de resumo: OK: <n> com a contagem de expressões que tiveram sucesso.

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

= 8
div by zero
parse error
unknown op
= 8
OK: 2

Experimente você mesmo

let exprs = readLine()!.components(separatedBy: ",")

// TODO: enum CalcError; func compute(...) throws -> Int;
// loop, do/try, imprimir resultado por expr; finalmente imprimir 'OK: <n>'

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