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

Предположим, что перед нами стоит задача вывести следующую картинку из звездочек:

 

Довольно очевидным решением является использование одного цикла, где на каждой итерации выводится строка из 10 звездочек:

 

for (int i=0; i<10; i++) {

printf("**********\n");

}

 

Такое решение удобно, если размер картинки всегда равен 10, однако, если требуется ввести размер с клавиатуры, то количество звездочек в строке заранее неизвестно, и решить задачу рассмотренным способом невозможно. Чтобы нарисовать картинку произвольного размера, необходимо использовать цикл не только для рисования строк, но и для рисования звездочек в строке.

 

int size;

printf("Введите размер картинки:\n");

scanf("%d",&size);

printf("\n");

for (int i=0; i<size; i++) {

for (int j=0; j<size; j++) {

printf("*");

}

printf("\n");

}

 

Здесь используется так называемый вложенный цикл, т.е. на каждой итерации одного цикла выполняется другой цикл. При использовании вложенных циклов нужно следить за тем, чтобы переменные-счетчики имели разные имена (в нашем случае – это переменные i и j).

 

 

Переменные во вложенных циклах должны быть разными, но условие работы внутреннего цикла может зависеть от счетчика внешнего цикла. Для вывода следующей картинки нужно, чтобы количество звездочек на каждой строке равнялось номеру строки, поэтому вместо условия j<size следует использовать j<i. Программа, выводящая эту картинку, отличается от предыдущей программы только условием окончания внутреннего цикла:

 

 

 

int size;

printf("Введите размер картинки:\n");

scanf("%d",&size);

printf("\n");

for (int i=0; i<size; i++) {

for (int j=0; j<i; j++) {

printf("*");

}

printf("\n");

}