- ベストアンサー
ループ
for(i=0;i<=10;i++){ for(j=0;j<=10;j++){ for(k=0;k<=10;k;;){ for(l=0;l<=10;l;;){ a=1+i; b=2+j; c=3+k; d=4+l; } } } } という4重ループを作り10000個のデータ(a0.dat,a1.dat・・・)を取りたいのですがどうすればよいですか?よろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
★『a』~『d』の変数値を『a0.dat』~『a9999.dat』に書き出したいの? ・それならば、次のようになります。 サンプル: char file[ 256 ]; FILE *fp; int i, j, k, l, count = 0; for ( i = 0 ; i < 10 ; i++ ){ for ( j = 0 ; j < 10 ; j++ ){ for ( k = 0 ; k < 10 ; k++ ){ for ( l = 0 ; l < 10 ; l++ ){ a = 1 + i; b = 2 + j; c = 3 + k; d = 4 + l; sprintf( file, "a%d.dat", count++ ); if ( (fp = fopen(file,"w")) != NULL ){ fprintf( fp, "a = %d\n", a ); fprintf( fp, "b = %d\n", b ); fprintf( fp, "c = %d\n", c ); fprintf( fp, "d = %d\n", d ); fclose( fp ); } } } } } 最後に: ・『for』文のループ条件式で『i <= 10』とすると 11 回ループします。 10 回ならば『i < 10』とします。 ・以上。おわり。
その他の回答 (3)
a1,a2・・・の数値に相当する部分のカウンタを用意すれば良い ちょっと端折って書くけどこんな。 int cn=0; //...... for(i=0;i<=10;i++){ //........ a=1+j; b=2+j; c=3+k; d=4+l; /* file output ... cnの値を使いファイル名を生成 */ cn++; //.........
お礼
ありがとうございました
>10000個のデータ(a0.dat,a1.dat・・・)を取りたい というのは? a0.datから値を読み込みたい? a0.datに値を出力したい? a=1+i; b=2+j; c=3+k; この部分、この場所で記述したら たとえば for(l=0;l<=10;l++){ } の間、 c=3+k; を繰り返しますが、毎回kの値が変わりませんが それはいいのですか?
お礼
ありがとうございます
補足
ちがいます。分かりにくくてすいません。a,b,cというパラメータを変えてシミュレーションした結果をa0.dat,a1.dat・・・a9999.datという風に記録していきたいのです。
- koko_u_
- ベストアンサー率18% (459/2509)
何がしたいのかサッパリわからん。 とりあえず、ループが 11*11*11*11 = 14641回まわってることだけわかった。 (k;; とかは k++ のミスタイプ?)
お礼
ありがとうございました
補足
for(i=0;i<=10;i++){ for(j=0;j<=10;j++){ for(k=0;k<=10;k++){ for(l=0;l<=10;l++){ a=1+i; b=2+j; c=3+k; d=4+l; } } } } です。a,b,c,dのパラメータを変えながらシミュレーションしたいのですが
お礼
ありがとうございました