Menu
CoddyTech

Вложенные циклы

Часть раздела Основы путешествия по Swift на Coddy. Урок 49 из 86.

Вложенный цикл — это просто цикл внутри другого цикла. Внутренний цикл выполняет все свои итерации для каждой отдельной итерации внешнего цикла.

let rows = 3
let cols = 2
for row in 1...rows {
    for col in 1...cols {
        print("Row \(row), Col \(col)")
    }
}
// Вывод:
// Row 1, Col 1
// Row 1, Col 2
// Row 2, Col 1
// Row 2, Col 2
// Row 3, Col 1
// Row 3, Col 2

Для каждого значения row внутренний цикл начинается заново и проходит через все значения col, от 1 до cols. Таким образом, при rows = 3 и cols = 2 код внутри выполняется всего 6 раз (3 × 2). Значения rows и cols никогда не меняются: они лишь указывают циклам, когда нужно остановиться.

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

Вот пример, который выводит простой прямоугольник из звёздочек:

for row in 1...2 {
    for col in 1...4 {
        print("*", terminator: "")
    }
    print("")  // Перейти на следующую строку
}
// Вывод:
// ****
// ****

Параметр terminator: "" не позволяет print добавлять символ новой строки, поэтому звёздочки появляются в одной строке. После завершения внутреннего цикла print("") переходит на следующую строку.

challenge icon

Задание

Легко

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

На вход будут поданы следующие значения:

  • Первая строка: количество строк (например, "3")
  • Вторая строка: количество столбцов (например, "4")

Требования:

  • Используй внешний цикл для строк (от 1 до rows)
  • Используй внутренний цикл для столбцов (от 1 до cols)
  • Выводи произведение текущих номеров строки и столбца
  • Разделяй значения в одной строке пробелом
  • Каждая строка должна выводиться на отдельной строке

Подсказка: Используй terminator: " ", чтобы выводить значения в одной строке, затем после внутреннего цикла используй print(""), чтобы перейти на следующую строку.

Например, если rows равно 3, а cols равно 4, вывод должен быть таким:

1 2 3 4 
2 4 6 8 
3 6 9 12 

Используй отдельный счётчик для каждого цикла (например, row для строк и col для чисел в строке) и сравнивай его с rows или cols. Не изменяй сами rows и cols: для каждой строки снова требуется cols.

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

let rows = Int(readLine()!)!
let cols = Int(readLine()!)!

// TODO: Напишите свой код ниже
// Используйте вложенные циклы, чтобы вывести таблицу умножения
// Внешний цикл: перебирайте строки (от 1 до rows)
// Внутренний цикл: перебирайте столбцы (от 1 до cols)
// Выведите произведение row * column
// Используйте print(..., terminator: " "), чтобы значения оставались в одной строке
// Используйте print("") после внутреннего цикла, чтобы перейти на следующую строку
quiz iconПроверьте себя

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

Все уроки раздела Основы

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