-1

XまたはOのいずれかを配列に入れようとしています。ただし、機能していないようです。「ランタイムチェックの失敗#2-変数「row1」の周りのスタックが破損しました」と書かれています。

char row1[19];
char row2[19];
char row3[19];
char row4[19];

for (int i = 0; i < 20; i++)
{
    int r = int(((double) rand() / (RAND_MAX)) + 1);

    if (r == 0)
    {
        row1[i] = 'X';
    }
    else
    {
        row1[i] = 'O';
    }

}

cout << row1[0] << endl;

ランダムなXまたはOを生成するにはどうすればよいですか?ありがとうございました。

4

3 に答える 3

3

elmigranto が述べたように: あなたのループは正しくありません。そのはず:

for (int i = 0; i < 19; i++)

これは、char row4[19];が 19 個の要素を含む配列であるためです。最初の要素はrow4[0]で、最後の要素はrow4[18]番号付けが 0 から始まるためです。そのため、最後のループでrow[19]はエラーが発生します。

于 2012-11-20T13:24:20.213 に答える
1

コイン投げが必要な場合は、次のようにすることができます

char row1[20];
char row2[20];
char row3[20];
char row4[20];

for (int i = 0; i < 20; i++)
{
    int r = rand() % 2;

    if (r == 0)
    {
        row1[i] = 'X';
    }
    else
    {
        row1[i] = 'O';
    }

}

私はあなたのコードでrow2 - row4が何のためにあるのか分かりません。19 個の要素のみを指定したため、row1[19] でスタックの破損が発生しますが、0..19 は 20 個の要素が必要であることを意味します。

于 2012-11-20T13:23:49.863 に答える
0
const int arr_size = 19;
char row1[arr_size];

for (int i = 0; i < arr_size; ++i) {
    row1[i] = rand() % 2 ? 'O' : 'X';
}
于 2012-11-20T13:33:06.017 に答える