moririnn
Re: moririnn
まずインデントを整えましょう。
これは入力を降順にソートして最初の3個を出力する、というプログラムですね。
ソートは今見ている範囲の先頭とそれ以外の要素を比較して先頭より大きい要素があったらそれと先頭を交換する、という処理を行い、
一回終わったら見る範囲から先頭の要素を外して同様に繰り返す、という方法の、O(N^2)のものですね。
scanfで入力を読み込んだつもりになって、実際に読み込めたかどうかをチェックせずに処理を進めているのはよくないですね。
これは入力を降順にソートして最初の3個を出力する、というプログラムですね。
ソートは今見ている範囲の先頭とそれ以外の要素を比較して先頭より大きい要素があったらそれと先頭を交換する、という処理を行い、
一回終わったら見る範囲から先頭の要素を外して同様に繰り返す、という方法の、O(N^2)のものですね。
scanfで入力を読み込んだつもりになって、実際に読み込めたかどうかをチェックせずに処理を進めているのはよくないですね。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: moririnn
まあそれくらいは大目に見てあげましょう。今回の問題の本質的なところではないですから。みけCAT さんが書きました: scanfで入力を読み込んだつもりになって、実際に読み込めたかどうかをチェックせずに処理を進めているのはよくないですね。
#include <stdio.h>
#define N (10)
int main(void)
{
int a[N];
int i, j, temp;
for (i = 0; i < N; i++) {
scanf("%d", &a[i]);
}
for (i = 0; i < N - 1; i++) {
for (j = i + 1; j < N; j++) {
if (a[i] < a[j]) {
temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
}
for (i = 0; i < 3; i++) {
printf("%d\n", a[i]);
}
return 0;
}
1行ずつ実行してみるってのはどうでしょうか。
あと、トランプのカードを数枚程度使ってプログラムのとおりに並べ替えてみるとか。
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。
プログラムは思ったとおりには動かない。書いたとおりに動く。