Menu
CoddyTech

Итоговый отчет

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

Последняя функция: вместо одной категории запусти весь тест и в конце сформируй сводку по каждой категории.

Здесь тебе пригодятся сразу все главы: распаковка кортежа для перебора, нестрогая проверка из главы о строках, словари с подстановкой значения по умолчанию из главы о словарях, упорядоченный перебор для детерминированного вывода.

Создай счётчики для каждой категории в виде двух параллельных словарей:

var totals: [String: Int] = [:]
var rights: [String: Int] = [:]

Увеличивай totals[cat, default: 0] += 1 для каждого вопроса; увеличивай rights[cat, default: 0] только при правильном ответе. В конце пройдись по категориям в алфавитном порядке и выведи отчёт.

challenge icon

Задание

Средне

Начните программу с этого банка из шести вопросов — того же, что и на предыдущем шаге:

let questions: [(String, String, String)] = [
    ("math", "2 + 2?", "4"),
    ("math", "Value of pi to 2 decimals?", "3.14"),
    ("geo", "Capital of France?", "Paris"),
    ("geo", "Largest ocean?", "Pacific"),
    ("science", "Color of grass?", "green"),
    ("science", "H2O is?", "water")
]

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

Выведите в следующем порядке:

  1. По одной строке для каждой категории, отсортированные по алфавиту, в формате <category>: <right>/<total>
  2. Одну последнюю строку: Total: <right>/<total> для всего запуска

Для входных данных 4 / 3.14 / Paris / Atlantic / green / WATER результат будет таким:

geo: 1/2
math: 2/2
science: 2/2
Total: 5/6

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

let questions: [(String, String, String)] = [
    ("math", "2 + 2?", "4"),
    ("math", "Value of pi to 2 decimals?", "3.14"),
    ("geo", "Capital of France?", "Paris"),
    ("geo", "Largest ocean?", "Pacific"),
    ("science", "Color of grass?", "green"),
    ("science", "H2O is?", "water")
]

// TODO: прочитать 6 ответов; оценить ответы с учётом допустимых вариантов; подсчитать количество вопросов и правильных ответов по каждой категории;
// вывести строки сводки в отсортированном порядке + Total
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

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

Потренируйтесь самостоятельно: Песочница Swift