2016-05-05 12 views
0

forループ内に2次元配列を塗りたい。しかし、それは動作しません。私は全く分からなぜそれが配列を充填されていない理由...forループの二次元配列を塗りつぶす

int main() { 

int a = 32; 
int x = 100; 
int y = 1; 
int z = 2; 
int i, j; 

int ar[32][2] = {{1,x},{}}; 
// works until here! 

// gives me that 
1 100 
0 0 
0 0 
0 0 
... 


// I need the array filled 
1    100 
somenumber  somenumber 
somenumber  somenumber 
somenumber  somenumber 
... 

for (i = 1; i <= a; i++) { 
    x = (x + y) * z; 
    ar[i][i] = {{i + 1, x},{}}; 
} 

return 0; 
} 

test.c: In function ‘main’: test.c:27:14: error: expected expression before ‘{’ token ar[i][i] = {{i + 1, x},{}};

を持っていません!

+0

は 'ar'はわずか20' int'sが含まれていますが、あなたのforループのインデックス32の異なる値にしようとしますが。 'ar [i] [i]'は 'int'です。なぜあなたは '{{i + 1、x}、{}}'をそれに割り当てようとしていますか? – aschepler

+0

また、 'int y = 1.2;'の値は '1'になります。 – aschepler

+0

@aschepler私はちょうど実現しました。私はその数を修正した。変数をよりよく理解できるように置き換えました。 – Stophface

答えて

1

[x][y]を使用すると、新しいアレイを作成するだけでは正確ではないことが説明されています。あるいは、あなたは正しいことを理解していませんでした。配列を作成し、この方法でサイズを指定するとElementType ArrayName[RowSize][ColumnSize];ポイントになります。

ここで2D行列を作成しました。これは第二の要素に値1を割り当てる

ArrayName[1][1] = 1;:それのすべての要素にアクセスするために、我々は、我々が望む要素の所望の「座標」、xとyと一緒に、この表記を使用[][]第2行。 RowSizeColumnSizeという配列を作成したときに提供された「範囲外の」xまたはyを指定すると、システムがクラッシュすることに注意してください。

チェックアウトあなたのケースの修正:

for(int x = 0; x < YourArray.size(); x++) 
{ 
    for(int y = 0; y < YourArray[i].size(); y++) 
    { 
     YourArray[x][y] = 1; // this will assign 1 to "all" and "every" element. 
     // so if you need to fill you array with something, 
     // here is the place where you are iterating every element in your 2d matrix. 
     // using two for loops, outer is for the rows and inner is for the columns 
    } 
} 
+0

素晴らしいです。今私はそれを得た! – Stophface

+0

@Stophfaceもしあなたがまだわからないのなら、これは擬似コードで、 'c'の配列にはネイティブ' .size() '関数がありません。 #define ARRAY_ROWS 32'や '#define ARRAY_COLS 2'のように、マジックナンバー(好きではない)、#define/constants(例えば#define ARRAY_ROWS 32')を使って反復処理を行い、それらの定数で配列を宣言して繰り返したり、 'sizeof'。これを見てください:http://stackoverflow.com/questions/37538/how-do-i-determine-the-size-of-my-array-in-c – yano

0

どういう意味ですか?

ar[i][i] = {{i + 1, x},{}}; 

ar [i] [i]は整数である。だから{{i + 1, x},{}}は何ですか?整数式ですか? Cでそのような式はありません

arは32 * 2配列なので、最初のインデックスは1から32までですが、i> = 2のときは2番目のインデックスが間違っていますi = 32、最初のインデックスも間違っています。

+0

私の配列は、(私が与えた例のように)計算の結果でいっぱいになります。私のfor-loopの中で配列をどの位置に埋める必要があるのか​​、私はどのように言いたいのか分かりません。したがって、最初の2つのスロットは既に使用されています。いいえ、私は2列目、2列目はいっぱいにします。その後、行、列などが2列目になります。 – Stophface

関連する問題