0

16 'X' の正方形を表示し、特定の座標を変更できる簡単なプログラムを作成したいと考えています。すべてが完了し、バグレポートを取得していませんが、プログラムでは非常に奇妙なことがあります。私が手に入れるべきものは簡単です

 XXXX                              
 XXXX
 XXXX
 XXXX

1,1をAに変更すると、これが必要です

 AXXX
 XXXX
 XXXX
 XXXX

しかし、プログラムを実行すると次のように表示されます。

 XXXX
 XXXX
 XXXX
 @

さて、4行目は何ですか?最初の場所にスマイリーがあり (@ を使用)、残りは空です。1,1 を何かに変更すると、3,4 も変更されます。他のすべては正常に動作します。4行目で何かを変更しようとすると、プログラムがクラッシュします。自分でテストしたい場合は、.exe #include をアップロードできます

using namespace std;

int main()
{
    for (;;) {
    int eingabe1;
    int eingabe2;
    char neueingabe;
    char array[4][4];
    array[1][1] = 'X';
    array[1][2] = 'X';
    array[1][3] = 'X';
    array[1][4] = 'X';
    array[2][1] = 'X';
    array[2][2] = 'X';
    array[2][3] = 'X';
    array[2][4] = 'X';
    array[3][1] = 'X';
    array[3][2] = 'X';   
    array[3][3] = 'X';
    array[3][4] = 'X';
    array[4][1] = 'X';
    array[4][2] = 'X';
    array[4][3] = 'X';
    array[4][4] = 'X';
    cout << "koordinaten eingeben" << endl; 
    cin >> eingabe1;
    cin >> eingabe2;
    cout << array[eingabe1][eingabe2] << endl;
    cout << "neueingabe eingeben" << endl;
    cin >> neueingabe;
    array[eingabe1][eingabe2] = neueingabe;
    cout << array[eingabe1][eingabe2]<< endl;
    }
    return 0;
}

あなたが助けてくれることを願っています

4

2 に答える 2

3

あなたはあなたの配列を過去に書いています!

C / C ++ / C#/ Javaおよび他のほとんどの言語の配列は、0から番号付けを開始します。

だから

int arr[4];
// you have:
arr[0]=1;
arr[1]=2;
arr[2]=3;
arr[3]=4;
//arr[4]= A REALLY BIG ERROR;
于 2013-01-23T14:32:57.427 に答える
1

インデックスを 0 から開始します。したがって、最大インデックスは 3,3 です。最低は 0,0 です。他の値にアクセスすると、ランダムな動作が発生します。最悪の場合、プログラムがクラッシュします。

于 2013-01-23T14:32:13.560 に答える