1

ユーザーがx、y(2次元配列の座標またはインデックス)を入力すると、何もない場合は0を返し、そうでない場合は1を返す関数を作成する際に、この問題が発生しています。

4

3 に答える 3

3

そのためには、まず配列を初期化する必要があります。次の方法で実行できます。

int i,j;
for (int i = 0; i<SizeX; i++) {
    for (int j = 0; j<SizeY; j++) {
        arr[i][j] = 0;
    }
}

これで、次の方法で簡単に確認できます。

int check (int arr[SizeX][SizeY] , int i , int j) {
    // out-of-bound check
    if (i < SizeX && j < SizeY) {
        return (arr[i][j] == NULL ? 0 : 1);
    }else {
        // -1 indicate error - out of bound indexes
        return (-1);
    }
}
于 2013-07-21T14:06:15.187 に答える
0

他の人は、センチネル値をチェックすることによって、要素が存在するかどうかという質問に答えました。これらの回答は、2D 配列が既に割り当てられていることを前提としています。状況に別のメモリ割り当てモデル (最初に 1D を割り当て、2D を動的に割り当てる) がある場合は、2D が実際に 1D インデックスに割り当てられているかどうかも確認する必要があります。1D => 最初の次元; 2D => 二次元。

于 2013-07-21T20:35:59.587 に答える
0

何もない とはどういう意味ですか?

配列を初期化しないと、ガベージ値が含まれます。

ただし、そうすると、セルに元の値が含まれているか、異なる値が含まれているかを確認できます

1 を返し、1 または 0 を返します。

于 2013-07-21T13:56:27.167 に答える