0

したがって、これは問題なくコンパイルされます。私が抱えている問題は、コンソールに出力するときに、右下隅に余分な列と奇妙なASCII文字があることです。配列のサイズを小さくしようとすると、9つの要素で初期化できなくなり、三目並べにするために9つの要素が必要になります。エラーが1つずれていると思ったのですが、そうだとどうすれば修正できるのかわかりません。「三目並べ」の同様の質問をかなりたくさん読んだことがありますが、同じ問題が発生しているようには見えません。

#include <iostream>

using namespace std;

int main ()
{
int countrow, countcol, play=1, subscript1, subscript2;
int ARRAY_ROWS = 3, ARRAY_COLS =3;
char board [3][3] = {{42, 42,42}, {42, 42,42}, {42, 42,42}};
char input;
while(play>0)
{
    for(countrow = 0; countrow<ARRAY_ROWS; countrow++)
    {
        for(countcol=0; countcol<ARRAY_COLS; countcol++)
        {
            cout<<board [countrow][countcol];
        }
        cout<<board[countrow][countcol];
        cout<<endl;
    }
cout<<"Player 1, enter your mark using a row column coordinate system.\n";
cin>>subscript1>> subscript2;
subscript1+=1;
board[subscript1][subscript2] = 88;
cout<<"Player 2, enter your mark using a row column coordinate system.\n";
cin>>subscript1>> subscript2;
board[subscript1][subscript2] = 79;
}
system("pause");
return 0;
}
4

3 に答える 3

1

ここに問題があります:

for(countrow = 0; countrow<ARRAY_ROWS; countrow++)
{
    for(countcol=0; countcol<ARRAY_COLS; countcol++)
    {
        cout<<board [countrow][countcol];
    }
    cout<<board[countrow][countcol]; 
    //^^^^^This one is redundant and you are accessing invalid memory block
    //^^^^^^ countcol is out of bound
    cout<<endl;
}
于 2013-03-25T02:26:20.710 に答える
1

次の行の冗長コピーがあります。

cout<<board[countrow][countcol];

これにより、行ごとにガベージデータ(countcol = 3、配列の境界外)を含む余分な列が作成されます。

于 2013-03-25T02:26:30.180 に答える
1

あなたの内側のループの後に、あなたは別のものを持っています

        cout<<board[countrow][countcol];

必要のないもの...削除すると、余分な列がなくなります。

于 2013-03-25T02:27:27.930 に答える