私は、ネストされたforループ内の乱数ジェネレータを使用して、指定された通りの各世帯の人数を生成するCを使用してプログラムを作成しようとしています。乱数を2D配列に割り当てる際にネストされたForループは終了しません。
これは本当に簡単なはずですが、データを配列の位置に割り当てるときにForループが停止しません。この部分を取り除くと、for-loopは通常通り終了します。
この1つは動作しますが、(私はポインタのテストを使用して、ループが停止しているかどうかを確認するために2をテストしています。)任意のデータを割り当てていません:
// populating the streets with kids
// Streets then houses, we are assuming that each street is uniform in number of houses
int KidsInStreet[9][24];
for(int o = 0; o <10; o++){
printf("Testing %d\n", o);
for(int j = 0; j < 25; j++){
// assign randnumber between 0 and 5 for no of kids
int r = rand() % 5;
// KidsInStreet[o][j] = r;
printf("Testing2 %d\n", j);
}
}
と私はデータを代入しようとすると、ループ
// populating the streets with kids
// Streets then houses, we are assuming that each street is uniform in number of houses
int KidsInStreet[9][24];
for(int o = 0; o <10; o++){
printf("Testing %d\n", o);
for(int j = 0; j < 25; j++){
// assign randnumber between 0 and 5 for no of kids
int r = rand() % 5;
KidsInStreet[o][j] = r;
printf("Testing2 %d\n", j);
}
}
なぜこの問題が起こっているのかわかりません。本当に問題ではないはずです。 は、任意のフィードバックをありがとうございました:)
あなたのループは限界があります。索引付けの制限は 'KidsInStreet [9] [24];' 'KidsInStreet [8] [23] = r;'です。これは*未定義の動作なので*実際の動作は無関係です。 –
配列インデックスの範囲はどのくらいですか? 9つの要素の配列の場合、有効なインデックス範囲は0〜8です(両端を含む)。あなたの外側のループは* 9 *になり、範囲外になり*未定義の動作*になります。 –
配列は 'int KidsInStreet [10] [25]'として宣言しなければならないか、それに応じてループを変更する必要があります。 –