Калькулятор с историей
Часть раздела Логика и управление потоком путешествия по Swift на Coddy — урок 56 из 56.
Задание
СреднеСоздайте калькулятор, который обрабатывает поток выражений, устойчив к ошибкам и в конце выводит историю по каждому оператору.
Прочитайте одну строку ввода: список выражений 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, вывод результата; создание истории по каждой операции;
// итоговый отчет в фиксированном порядке, только для успешных операций
Все уроки раздела Логика и управление потоком
1Строки в деталях
Подсчет и индексыРегистр и удаление пробеловПоиск в строкахРазделение и объединениеЗамена подстрокИтоги — Проверка имени пользователя4Множества
Создание множествОбъединение и пересечениеРазность и симметрическая разностьПодмножество и надмножествоИтоги — Фильтр тегов7Проект — Трекер привычек
Обзор проектаОтметить выполнение10Проект — Движок викторины
Обзор проектаЗадаем вопросы2Диапазоны и шаги
Закрытые и полуоткрытыеШагМетоды диапазоновДиапазоны в SwitchИтоги: Сетка календаря