Menu
Coddy logo textTech

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

Часть раздела Основы путешествия по R на Coddy — урок 44 из 78.

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

for (i in 1:3) {
  for (j in 1:2) {
    cat("i =", i, ", j =", j, "\n")
  }
}

Вывод:

i = 1 , j = 1 
i = 1 , j = 2 
i = 2 , j = 1 
i = 2 , j = 2 
i = 3 , j = 1 
i = 3 , j = 2

Для каждого значения i внутренний цикл проходит через все значения j. Когда i равно 1, j проходит от 1 до 2. Затем i становится равным 2, и j снова начинает от 1 до 2.

Практический пример — создание простой таблицы умножения:

for (row in 1:3) {
  for (col in 1:3) {
    cat(row * col, " ")
  }
  cat("\n")
}

Вывод:

1  2  3  
2  4  6  
3  6  9

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

challenge icon

Задание

Легко

Прочитайте два числа из входных данных: rows и cols.

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

Выводите каждую строку на отдельной линии, разделяя значения одиночным пробелом. Используйте cat() для вывода, добавляя символ новой строки после каждой строки.

Например, если входные данные равны 3 и 4, вывод должен быть следующим:

2 3 4 5 
3 4 5 6 
4 5 6 7

В первой строке (строка 1) значения равны 1+1=2, 1+2=3, 1+3=4, 1+4=5. Во второй строке (строка 2) значения равны 2+1=3, 2+2=4, 2+3=5, 2+4=6 и так далее.

Шпаргалка

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

for (i in 1:3) {
  for (j in 1:2) {
    cat("i =", i, ", j =", j, "\n")
  }
}

Для каждого значения i внутренний цикл проходит через все значения j.

Пример создания таблицы умножения:

for (row in 1:3) {
  for (col in 1:3) {
    cat(row * col, " ")
  }
  cat("\n")
}

Внешний цикл управляет строками, в то время как внутренний цикл обрабатывает каждый столбец в этой строке. Используйте cat("\n") для вывода новой строки после завершения каждой строки.

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

# Чтение входных данных
con <- file("stdin", "r")
rows <- as.integer(suppressWarnings(readLines(con, n = 1)))
cols <- as.integer(suppressWarnings(readLines(con, n = 1)))
close(con)

# TODO: Напишите свой код ниже
# Используйте вложенные циклы, чтобы напечатать прямоугольник, где каждая ячейка содержит row + column
# Используйте cat() для вывода значений, разделенных пробелами, с новой строкой после каждой строки
quiz iconПроверьте себя

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

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