/***************************************************/ /* 本プログラムは, */ /* 各選手のタイムをminute[i]に分を,second[i]に秒を */ /* 入力し,入力したタイムを速い順に並べ変えて出力す */ /* るものです。 */ /***************************************************/ #include #define N 100 main() { double minute[N+1]; /*記録入力用行列(分)*/ double second[N+1]; /*記録入力用行列(秒)*/ double sm,ss; /*昇順並べ変え作業用変数*/ int i; int t; int n; /* 各選手のデータの代入 */ minute[1] =1.0; second[1] = 52.56; minute[2] =2.0; second[2] = 1.33; minute[3] =1.0; second[3] = 54.28; minute[4] =1.0; second[4] = 51.67; minute[5] =1.0; second[5] = 56.14; minute[6] =1.0; second[6] = 59.05; minute[7] =1.0; second[7] = 57.28; minute[8] =1.0; second[8] = 53.88; minute[9] =1.0; second[9] = 52.22; minute[10]=1.0; second[10]= 53.47; n=10; /* 入力データを確認するために表示 */ i=1; while( i<=n ){ printf("minute[%d]=%g second[%d]=%g \n",i, minute[i],i,second[i] ); i=i+1; } /* 並べ変え本体 */ t=1;/*比較対象となる行列番号を1つめとする*/ while( t<=n ){ i=t+1;/*比較の相手方の行列番号はtより大きい値*/ while( i<=n ){ /*以下if文内で秒変換し、比較*/ if(minute[t]*60+second[t]>minute[i]*60+second[i]){ /*速いタイムが見つかれば、入れ換え*/ sm=minute[t]; ss=second[t]; minute[t]=minute[i]; second[t]=second[i]; minute[i]=sm; second[i]=ss; } i=i+1; } /* 結果の表示 */ /*出力は分秒で出力*/ printf("%d位のタイムは %g分%g秒 です。\n",t,minute[t],second[t]); t=t+1; } exit(0); }