Понимание вложенных в цикл для печати шаблона звездочки - PullRequest
0 голосов
/ 30 октября 2018

Может кто-нибудь объяснить, как этот Nested For Loop печатает шаблон Asterisk. Я не понимаю, как работает реальная петля и печатает шаблон, я знаю, что cout печатает астрикс (ы), но как узнать, печатать 1 астрицу, затем 2, затем 3 ... и т. Д.

#include "pch.h"
#include <iostream>
using namespace std;
int main() {
int a, cols, rows;
cout << " Please enter a number: ";
cin >> a;

for (cols = 1; cols < a + 1; cols++) {
    for (rows = 0; rows < cols; rows++)
        cout << "*";
    cout << endl;
    }
}

Ответы [ 3 ]

0 голосов
/ 30 октября 2018

Сначала вы принимаете пользовательский ввод для размера шаблона. Теперь предположим, что вход или значение а равно 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 набора звездочек, и таким образом он продолжается и завершается, как только условие внешнего цикла становится ложным.

0 голосов
/ 03 мая 2019

чтобы напечатать обратный треугольник, вы можете использовать этот способ

    for (let i = 0; i < num; i++) {
    for (let j = num -1 ; j > i; j--) {
      if(j == num-1 ){
        spacein += ""  
      } else {
        spacein += "  "
      }
    }
    if(i == num-1) {

    } else {
      console.log(space + "*" + spacein + "*")
    }

    space += " "
    spacein = ""
  }
0 голосов
/ 30 октября 2018

"который для утверждения выглядит на первый взгляд"

У вас неверное представление о том, как компьютер запускает такую ​​программу - это не "просмотр" вашего кода и выяснение того, что вы хотите сделать, он просто идет строка за строкой.

Вы можете наблюдать это шаг за шагом, используя отладчик. Поместите точку останова в строку cin >> a; и продолжайте движение вперед - вы точно увидите, что делает программа, и вы сможете просмотреть все переменные в любое время. (Это лучше всего сделать в отладочной сборке вашего кода.)

...