Menu
CoddyTech

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

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

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

Хорошая аналогия — часы: для каждого часа (внешний цикл) минутная стрелка (внутренний цикл) должна пройти полный 60-минутный цикл.

Пример вложенного цикла:

int rows = 2;
int cols = 2;
for (int x = 0; x < rows; x++) {
	for (int y = 0; y < cols; y++) {
		Console.WriteLine(x + " " + y);
	}
}

// Это выведет:
// 0 0
// 0 1
// 1 0
// 1 1

Внешний цикл (x) выполняется rows раз, и каждый раз внутренний цикл (y) выполняется cols раз, то есть тело внутреннего цикла выполняется всего 2 × 2 = 4 раза. У каждого цикла есть свой счётчик: y снова начинает с 0 при каждом запуске внешнего цикла, а rows и cols остаются неизменными и только указывают циклам, когда остановиться.

При работе с вложенными циклами вам также может понадобиться Console.Write(). В отличие от Console.WriteLine(), который выводит текст и переходит на новую строку, Console.Write() выводит текст без добавления символа новой строки в конце. Это позволяет накапливать вывод в одной строке:

for (int y = 0; y < 4; y++) {
	Console.Write("* ");
}
Console.WriteLine();

// Это выведет:
// * * * * 

Здесь Console.Write() продолжает выводить текст в той же строке, а Console.WriteLine() в конце переходит на следующую строку.

challenge icon

Задание

Новичок

Напишите программу, которая выводит прямоугольник из звёздочек (*) заданной ширины и высоты.

Ввод: два целых числа: width и height

Например:

Если width = 5 и height = 3, вывод должен быть таким:

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

Если width = 4 и height = 6, вывод должен быть таким:

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

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

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

using System;

public class Program {
    public static void Main(string[] args) {
        int width = int.Parse(Console.ReadLine());
        int height = int.Parse(Console.ReadLine());
        // Напишите свой код ниже

    }
}
quiz iconПроверьте себя

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

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

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