Распечатать массив 3 строки - PullRequest
1 голос
/ 08 ноября 2011

Я пытаюсь распечатать этот массив из 9 элементов в 3 строки.

Я хочу напечатать его в 3 строки с 3 строками, например.

xxx
xxx
xxx

Но я не уверен, как с этим справиться.

void ticTacToeBoard ()
{
    for (int i = 0; i < 9; i++)
    {
        cout << ticTacBoard[i] << " ";
    }
}

Ответы [ 4 ]

4 голосов
/ 08 ноября 2011

Мне нравится быть многословным с моими циклами, поэтому попробуйте это:

void ticTacToeBoard ()
{
    for (int y = 0; y < 3; y++)
    {
        for (int x = 0; i < 3; x++)
        {
            cout << ticTacBoard[3 * y + x] << " ";
        }

        cout << endl;
    }
}

В основном я перебираю вашу доску в строках (y), а затем в столбцах (x)позволяя мне печатать каждую ячейку и контролировать поток.

Я просто печатаю новую строку (endl) после каждой строки.

1 голос
/ 08 ноября 2011

Измените ticTacBoard на двумерный массив и выполните

 using namespace std;


int main()
{

    int ticTacBoard[3][3];

    for (int i = 0; i < 3; i++)
    {
        for (int j = 0; j < 3; j++)
        {
            cout << ticTacBoard[i][j] << " ";
        }

        cout << endl;
    }


    return 0;
}

Двумерный массив будет легче понять.

0 голосов
/ 08 ноября 2011

Вы можете переключить смещение в одномерном массиве (скажем, i) на смещение в двумерном по следующей простой формуле:

row = i div width
column = i mod width

Итак, в основном:

for(int i = 0; i < 9; i++) {
    cout << ticTacBoard[i];

    if(i % 3 == 2)
        cout << endl;
    else
        cout << ' ';
}
0 голосов
/ 08 ноября 2011

Используйте оператор по модулю для обнаружения каждой третьей итерации.Затем напечатайте новую строку.

void ticTacToeBoard ()
{
    for (int i = 0; i < 9; i++)
    {
        cout << ticTacBoard[i] << " ";

        if((i + 1) % 3 == 0) {
            cout << endl;
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...