Menu
Coddy logo textTech

Калькулятор с историей

Часть раздела Логика и управление потоком путешествия по Swift на Coddy — урок 56 из 56.

challenge icon

Задание

Средне

Создайте калькулятор, который обрабатывает поток выражений, устойчив к ошибкам и в конце выводит историю по каждому оператору.

Прочитайте одну строку ввода: список выражений a:op:b, разделенных запятыми. Операторы: +, -, *, /. Определите перечисление CalcError: Error с вариантами parse, divideByZero, unknownOp.

Для каждого выражения по порядку:

  • Выведите = <n> в случае успеха
  • Выведите parse, divZero или unknownOp для каждого случая ошибки

После строк для каждого выражения выведите по одной строке для каждого оператора, который успешно сработал хотя бы один раз, в фиксированном порядке +, -, *, /:

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

count — это количество успешных срабатываний данного оператора; sum — общая сумма этих успешных результатов.

Для входных данных 3:+:5,10:/:0,7:*:2,9:%:2,12:-:4,8:+:2 вывод будет следующим:

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

Попробуйте сами

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

// TODO: enum CalcError; func compute(...) throws -> Int;
// цикл, do/try, вывод результата; создание истории по каждой операции;
// итоговый отчет в фиксированном порядке, только для успешных операций

Все уроки раздела Логика и управление потоком