0

ピクセルであるはずの構造体を宣言しました。これには、次のような3つのプロパティ(xy位置、F強度)があります。

struct pixel {
    int F,          // intensity from 0-255
    x,              // horizontal component           
    y;              // vertical component
};

次に、次のようにピクセル型の2D配列(上記の構造体)を宣言しました。

int N=100;
pixel image[N][N];

x次に、次のループを使用して、とに値を割り当てましたy

int count, k;

for (int i=0 ; i<N ; i++)
    for (int j=0 ; j<N ; j++)
    {
        k = j + i*N;
        image.x[k] = count;
        count++; 
     }

私は何を間違えましたか?

4

4 に答える 4

4

を使用ijてインデックスを作成できますimage

    image[i][j].x = count;

kなぜ必要なのか、明示的なインデックス計算はまったくわかりません。コンパイラが自動的にそれを行います。

于 2012-12-12T20:28:12.220 に答える
2

構造体自体ではなく、構造体のフィールドにインデックスを付けようとしています。さらに、2D配列としてインデックスを付けていません。

行うのではなく:

image.x[k]

行う:

image[i][j].x

また、コードはコンパイルされますか?一部のコンパイラは、constであっても、境界が変数である配列の宣言を拒否します。

于 2012-12-12T20:28:04.413 に答える
2

この線

image.x[k] = count;

間違っている。ピクセルの2D配列を宣言しました。

pixel image[N][N];

配列の要素にアクセスする方法は次のとおりです。

image[i][j].x = count;

フラットインデックスkを自分で計算する必要はありません。

于 2012-12-12T20:30:40.470 に答える
0

まず第一に、「k」は定義されていません。したがって、kにはガベージ値を使用します。

また、画像内のポイントのインデックスを作成するには、次を使用する必要があります。

image[i][j]

したがって、プログラムの修正は次のようになります。

image[i][j].x = count;

それ以外のimage.x[k] = count;

于 2012-12-12T20:36:22.927 に答える