- C言語なら俺に聞け! Part 135©2ch.net
249 :デフォルトの名無しさん[sage]:2016/05/25(水) 18:09:12.23 ID:mqK6DNQr - 最後のループではi<4ではなくてi<5。
最後のprintfでは最高点tempmaxを表示するようだけど、 何人目だからiを表示しないといけない。 最高点を取った人の番号を保存するための変数を用意して 最後のループを書き換える。 int no=0; for( i=0; i<5; i++) { if(c[i]>tempmax) { tempmax = c[i]; no=i; } } printf("合格(A):%d人目 ",no+1); これでどうだ?
| - C言語なら俺に聞け! Part 135©2ch.net
250 :デフォルトの名無しさん[sage]:2016/05/25(水) 18:12:42.26 ID:mqK6DNQr - こっちの方がいいかな。
printf("合格(A):%d人目 %d点",no+1,(int)tempmax);
| - C言語なら俺に聞け! Part 135©2ch.net
259 :デフォルトの名無しさん[sage]:2016/05/25(水) 22:09:08.78 ID:mqK6DNQr - ソートしないなら、tempmax1とtempmax2を用意して最初に最高点のtempmax1と順番を決定する。
次にtempmax2に対しても同じ計算をする。但し、c[i]<tempmax1を果たす。 要するに、最高得点を超えない場合の最高得点を求めればよい。 double tempmax1 = c[0],tempmax2 = c[0]; int no1=0,no2=0; for( i=0; i<5; i++) { if(c[i]>tempmax1) { tempmax1 = c[i]; no1=i; } } for( i=0; i<5; i++) { if(c[i]>tempmax2 && c[i]<tempmax1) { tempmax2 = c[i]; no2=i; } } printf("合格(A):%d人目 %d点\n",no1+1,(int)tempmax1); printf("合格(A):%d人目 %d点\n",no2+1,(int)tempmax2);
| - C言語なら俺に聞け! Part 135©2ch.net
264 :デフォルトの名無しさん[sage]:2016/05/25(水) 23:24:12.02 ID:mqK6DNQr - 面倒な奴だな。質問を小出しにするなよ。手間を掛けさせるな。
1番目2番目とかじゃなくて 5番目6番目とかずっと先まで出力したいなら 並べ替えしてから出力した方が短くて簡単だぞ。 並べ替えの方法はそこら辺のアルゴリズムの本に 幾らでも書いてある。本を探すのが面倒ならwikiにも出ているぞ。 挿入ソートでも見ればC言語のソースも載っている。 それをコピペして使え。
|
|