- ベストアンサー
ソートプログラム
前に質問したものです。慌てていたのですみません。 Cで書いた直接選択法です。 #include <stdio.h> #include <stdlib.h> #include <time.h> #define N 1000 void main( void ) { int min,s,t,i,j,k,a[N]; srand((unsigned int)time(NULL)); for(i=0;i<N;i++) a[i]=rand()%1000+1; for(j=0;j<i-1;j++){ min=a[j]; s=j; for(k=j+1;k<i;k++){ if(a[k]<min){ min=a[k]; s=k; } } t=a[j];a[j]=a[s];a[s]=t; for(s=0;s<i;s++) printf("%d,\t",a[s]); } } このプログラムを実行すると、1回ずつ入れ替えされたものが出力されます。 100回、200回、・・・と入れ替えを行った値を出力するには、どうすればよいでしょうか? ループを入れてみたりしてみましたが、、?? プログラムを再帰の方法をつかって書いたほうが、、、?? よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
printf関数による印刷ループ(by:s)がjのループ中で毎回実行されてますね。 この印刷ループを100回に1回実行するようにif文を追加すればいいでしょう。 if文の内容は既にNo.1の方が回答されている通りです。
その他の回答 (1)
- leaz024
- ベストアンサー率75% (398/526)
変数 i が 0 から N-1 まで変化しますから、i を使って100の倍数回の時に真になる条件文を書き、中に表示ルーチンを書けばよいでしょう。 ちなみに i=0 の時が1回目ですから、100回目の時は i=99 です。 同様に200回目が i=199、300回目が i=299 となりますから、「i を100で割った余りが 99 なら」という条件文を書けばOKですね。
お礼
ありがとうございました。
お礼
ありがとうございました。