Menu
CoddyTech

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

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

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

rows = 2
cols = 3
for i in 1..rows
  for j in 1..cols
    puts "i=#{i}, j=#{j}"
  end
end

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

Сначала i равно 1, пока j принимает значения 1, 2, 3. Затем i становится равным 2, и j снова принимает значения 1, 2, 3. rows и cols никогда не меняются: они лишь сообщают циклам, когда остановиться.

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

for row in 1..3
  for col in 1..3
    print "#{row * col} "
  end
  puts ""
end

Это выводит сетку товаров 3x3. print оставляет значения в одной строке, а puts "" переходит на новую строку после завершения каждой строки. Можно также сочетать разные типы циклов, например цикл times внутри цикла for.

challenge icon

Задание

Легко

Считай из ввода два целых числа:

  1. rows — количество строк
  2. cols — количество столбцов

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

Используй print для вывода звёздочек в строке и puts, чтобы перейти на следующую строку после каждой строки.

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

* * * *
* * * *
* * * *

Если входные данные — 2 и 5, вывод должен быть таким:

* * * * *
* * * * *

После последней * в строке нет пробела.

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

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

# Считайте входные данные
rows = gets.to_i
cols = gets.to_i

# TODO: Напишите свой код ниже
# Используйте вложенные циклы, чтобы вывести прямоугольник из звёздочек
# Используйте print для вывода звёздочек в строке, а puts — для перехода на следующую строку
quiz iconПроверьте себя

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

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

Потренируйтесь самостоятельно: Онлайн-компилятор Ruby