0

C++ 2D 配列でコーディングするときに問題が発生しました。ちょっと質問なのですが、下のコードはどういう意味ですか?

...

if(array[x][y] >= 9){

...

}

...

配列の x と y の合計が 9 以上の場合、IF の本体のみが実行されるということですか? または ........?

簡単な例を挙げて説明してください。

4

3 に答える 3

1

配列は2次元です。これは、要素を意味しますarray[x][y]

1 つのインデックスのみを必要とする 1D 配列とは異なり、2D 配列は、array[x][y]おそらくネストされた for ループの形で 2 つのインデックスを必要とします。

このような配列を反復処理できます

for (int x = 0; x < arrayLength; x++) {
    for (int y = 0; y < array[x]Length; y++) {

    // do something with array[x][y]

    }  
}

ここで、arrayLength は array の長さであり、array[x] length は array[x] の長さです。

したがって、投稿したコードを参照して、2D 配列のメンバーが 9 以上かどうかをテストしています。

于 2012-08-02T14:25:15.057 に答える
1

では、基本から始めましょう。

1D 配列

通常の配列をどのように想像できますか? 通常の配列は数直線のようなものだと言えます。

|-------------------------------| where every - is one element in your array

左側の最初の「-」は、myArray[0] の要素です (「|」は、開始と終了があることを単に象徴しています)。

二次元配列

2D 配列は、チェッカーボード、本棚、または列と行を含むテーブルとして視覚化できます。

|-------------------------------|
|-------------------------------|
|-------------------------------|
|-------------------------------|

チェスと同じように、要素をアドレス指定するには 2 つの値が必要です。値を 1 つだけ指定すると、コンパイラは値の行を認識しているが、その列を認識していない可能性があります (またはその逆)。これは、x 座標と y 座標が必要であることを意味します (これは、座標系の視覚的なアナロジーです)。値に対処するには、次のようにする必要があります。

myArray[x][y] ここで、x はチェッカーボードの行、y は列です。

あなたの場合、2D配列はおそらく整数で満たされています。「if」ステートメントは、myArray[x][y] に格納されている値が 9 より大きいかどうかをチェックします。myArray[x][y] が 9 より大きい場合、このステートメントは true を返し、内部のコードが実行されます。

'if' ステートメント内のコードを実行した後、プログラムは if ステートメントの後のコードを実行し続けます。2D 配列は、配列を含む配列として理解できます。

3 次元配列が可能だと考えているなら、その通りです。ここでは、深さ、高さ、長さがあるため、ポイントを記述するために 3 つの座標が必要です (ここでは、要素の総量に関する長さではなく、視覚的な長さについて話しています)。

これが役に立ったかどうかはわかりませんが、これはもちろん、多次元配列がどのように機能するかを説明する非常に視覚的なアプローチです。

int myArray[3][3] = {{1, 2, 3},   // row 0
                     {4, 5, 6},   // row 1
                     {7, 8, 10}}; // row 2

この場合、myArray[2][2] = 10 であるため、if ステートメントは x = 2 および y = 2 の場合にのみ実行されます。

于 2012-08-02T15:52:08.357 に答える
0

これは、「座標 (x,y) の要素が 9 以上である場合...」を意味します。

追加操作はありません。配列はおそらく最小次元 (x+1, y+1) で宣言されています。

    int array[2][2] = {{12, 6}, {3, -2}};

    int x=1, y=0;

    if(array[x][y] >= 9){...}    // array[1][0] equals 3, condition is false
于 2012-08-02T14:55:13.317 に答える