0

次のコードを実行すると、Tic Tac Toe ゲーム ボードを更新しようとしています。3 を列として入力すると、ゲーム ボードに 2 つの X または O が設定されます。

出力例を次に示します。

*  *  *
*  *  *
*  *  *

X: Select a Row: 1
X: Select a Col: 3
*  *  X
X  *  *
*  *  *

ここに目的の出力があります

*  *  *
*  *  *
*  *  *

X: Select a Row: 1
X: Select a Col: 3
*  *  X
*  *  *
*  *  *

ここにコードがあります

#include <iostream>
#include <iomanip>

using namespace std;

int main()
{
    int rowSelect = 0;
    int colSelect = 0;
    char turn = 'X';
    char rowcol[2][2];

    for(int i=0; i < 3; i++)
    {
        for(int j=0; j < 3; j++)
        {
            rowcol[i][j] = '*';
        }
    }

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

    cout << endl;

    while (true)
    {

        cout << turn << ": Select a Row: ";
        cin >> rowSelect;
        while (rowSelect < 1 || rowSelect > 3)
        {
            cout << "I cannot accept that value, try again!" << endl;
            cout << endl;
            cout << turn << ": Select a Row: ";
            cin >> rowSelect;
        }

    cout << turn << ": Select a Col: ";
    cin >> colSelect;
    while (colSelect < 1 || colSelect > 3)
    {
        cout << "I cannot accept that value, try again!" << endl;
        cout << endl;
        cout << turn << ": Select a Col: " << endl;
        cin >> colSelect;
    }

    rowcol[rowSelect-1][colSelect-1] = turn;

    if (turn == 'X')
    {
        turn = 'O';
    }
    else
    {
        turn = 'X';
    }

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

    }

    system("PAUSE");
    return 0;
}

ありがとう!

-マイク

4

4 に答える 4

4

問題は配列です。配列はゼロベースのインデックスを使用してアクセスされますが、定義にはスペースを予約する実際の要素数が必要です。

rowcol を次のように定義しました。

char rowcol[2][2];  // This defines a 2 x 2 array

rowcol を次のように定義する必要があります。

 char rowcol[3][3];  // This defines a 3 x 3 array

お役に立てれば!

キース

于 2012-11-03T00:19:50.153 に答える
3

rowcol 配列は 3x3 である必要があります。

char rowcol[3][3];
于 2012-11-02T23:57:16.153 に答える
0
char rowcol[2][2];

いずれの場合も、2x2 の配列であるため、i, jまでのみ反復する必要があります。< 2

于 2012-11-02T23:55:10.703 に答える
0
  • 配列は行ごとに 2 つの要素しか保持しませんが、ループは 3 つの行と 3 つの列を実行します。配列の番号付け方法について混乱しているようです.2つの要素を持つ配列は、要素[0]と要素[1]を使用してアクセスされます.0はプログラミングの最初の数字です(1ではありません). 3 つの要素の配列を宣言し、[0] [1] および [2] を使用してそれらにアクセスする必要があります。

修正: に変更char Array[3][3];

于 2012-11-02T23:58:24.653 に答える