Сначала вы принимаете пользовательский ввод для размера шаблона. Теперь предположим, что вход или значение а равно 3.
Теперь, когда выполняется первый цикл, он начинается так
для (cols = 1; cols <4; cols ++)
Теперь, когда выполнение переходит во вложенный цикл, цикл выглядит следующим образом
for (строки = 0; строки <1; строки ++) </p>
В вложенном цикле условие выполняется, потому что 0 меньше 1, поэтому он печатает первую звездочку "*", и внутренний цикл останавливается, и выполнение перемещается дальше, а cout << endl перемещается на новую строку, т. Е. Вставляет символ новой строки. </p>
Для 2-й итерации внешнего цикла значение cols становится равным 2, и после этого оно снова входит во внутренний или вложенный цикл. Здесь внутренний цикл выглядит следующим образом: - для (строки = 0; строки <2; строки ++)
Теперь 0 меньше 2, поэтому цикл выполняется и печатает звездочку «*», а выполнение внутреннего цикла продолжается, и снова значение строк увеличивается до 1. Поскольку 1 также меньше 2, поэтому он снова печатает звездочку, и выполнение внутреннего цикла останавливается, оставляя две звездочки в консоли, т.е. "**". </p>
Итак, у вас есть такой шаблон
*
**
И вышеупомянутый процесс продолжается, и он снова печатает 3 набора звездочек, и таким образом он продолжается и завершается, как только условие внешнего цикла становится ложным.