Нужно 3 отдельных выхода - PullRequest
0 голосов
/ 13 июня 2018
#include <iostream>
using namespace std;

int main (){

    int row, 
        column = 0,
        colCount = 3,
        rowCount = 3;

    //for loop
    for (column; column < colCount; column++){

        for(row = 0; row <= (rowCount - 1); row++){

            cout << column << " " << row;

            if(row < (rowCount - 1)){
                cout << ", ";           
            }

        }

        cout << endl;

    }

    //while loop
    while(column < colCount){

        while(row < rowCount){

            cout << column << " "<< row;

            if(row < (rowCount - 1)){
                cout << ", ";           
            }

            row++;          

        }

        cout << endl;   
        column += 1;
        row = 0;
    }

    //do while loop
    do{
        do{
            cout << column << " "<< row;

            if(row < (rowCount - 1)){
                cout << ", ";           
            }

            row++;  
        }while(row < rowCount);

        cout << endl;
        column +=1;
        row = 0;
    }while(column < colCount);

}

При комментировании 2/3 циклов каждый из них будет выдавать желаемый результат.Все вместе, кажется, работает поверх друг друга и добавляет дополнительный вывод.

Текущий вывод:

0 0, 0 1, 0 2
1 0, 1 1, 1 2
2 0, 2 1, 2 2
3 3

Требуемый вывод:

0 0, 0 1, 0 2
1 0, 1 1, 1 2
2 0, 2 1, 2 2

0 0, 0 1, 0 2
1 0, 1 1, 1 2
2 0, 2 1, 2 2

0 0, 0 1, 0 2
1 0, 1 1, 1 2
2 0, 2 1, 2 2

Как мне получитьвыход из каждого цикла?

Ответы [ 2 ]

0 голосов
/ 13 июня 2018

Вы можете оставить цикл for таким, как он есть:

    for (; column < colCount; column++){
        for(row = 0; row <= (rowCount - 1); row++){
            std::cout << column << " " << row;
            if(row < (rowCount - 1))
                std::cout << ", ";
        }
        std::cout << std::endl;
    }

Теперь column и row достигает 3 в for-loop выше, что делает его while loop никогдабудет казнен.Таким образом, вам нужно сделать их обоих 0.

И третий цикл do-while всегда выполняется перед проверкой любых условий, поэтому вы получаете 3 3

В любом случае,Вот решение вашей проблемы.

#include <iostream>

int main ()
{
    int row, column = 0, colCount = 3, rowCount = 3;

    //for loop
    for (column; column < colCount; column++){
        for(row = 0; row <= (rowCount - 1); row++){
            std::cout << column << " " << row;
            if(row < (rowCount - 1))
                std::cout << ", ";
        }
        std::cout << std::endl;
    }
    std::cout<<std::endl;
    //while loop
    column = 0;
    row = 0;
    while(column < rowCount){
        while(row < rowCount){
            std::cout << column << " "<< row;
            if(row < (rowCount - 1))
                std::cout << ", ";
            row++;          
        }
        std::cout << std::endl;   
        column += 1;
        row = 0;
    }
    //do while loop
    std::cout<<std::endl;
    column = 0;
    row = 0;
    do{
        do{
            std::cout << column << " "<< row;
            if(row < (rowCount - 1))
                std::cout << ", ";
            row++;  
        }while(row < rowCount);
        std::cout << std::endl;
        column +=1;
        row = 0;
    }while(column < colCount);
    return 0;
}
0 голосов
/ 13 июня 2018

1) Вы должны инициализировать column в начале каждого цикла как 0.
2) В циклах while и do инициализировать row до 0 перед вводомвнутренний цикл

Выход 3 3 в конце обусловлен одним входом в цикл do-while.

...