- ベストアンサー
C言語のプログラムで得点を降順に整列して表示する方法と比較回数を求める方法
- C言語のプログラムでリスト処理により得点を降順に整列し、その結果を表示する方法を教えてください。
- また、整列する際に要素どうしを比較する回数も求める方法も教えていただけると助かります。
- プログラムはファイルを開いてから書き始める必要がありますが、どのように書けば良いのか分からなくなってしまいました。アドバイスをお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
どうやら配列への読み込みすら判らないと言う事ですかね? 参考までに読込とソート部分をば struct GDATA seisek[100]; // 簡単にするため100人分に制限 int ninzu = 0; while(fscanf(fp, "%d%s%s%d", &(seisek[ninzu].bango), seisek[ninzu].sei, seisek[ninzu].mei, &(seisek[ninzu].tokuten)) != EOF && ninzu < 100){ ninzu += 1 ;//人数カウント } // 一番簡単なバブルソート long hikaku = 0 ; bool flag ; struct GDATA work ; while(1){ flag = false ; for(int i = 0 ;i < ninzu - 1 ;i++){ hikaku += 1 ;//比較回数カウント if(seiseki[i].tokuten < seiseki[i+1].tokuten){ work = seiseki[i]; seiseki[i] = seiseki[i + 1] ; seiseki[i + 1] = work ; flag = true ; } } if(flag == false){ break ;//ソート終わり } } こんなとこですかね。 ああ、コンパイルはしてないので、エラー抜きは自前でやってね。
その他の回答 (1)
- Wr5
- ベストアンサー率53% (2173/4061)
>リスト処理による挿入法で 双方向にするか片方向にするかは不明ですが…連結リスト構造にするなら構造体のメンバが足りないようですが…。 # 次のノード・前のノードを指すポインタがないと連結リストになりませんし。 そこらヘンがなんとかなったとして… >ファイルを開いてからこの先どのように書けばいいのかわからなくなりました。 ファイルから読み込んでリスト構造に追加して下さい。 >得点の降順に整列して表示する。また、整列する際に要素どうしを比較した回数も表示する。 ファイルから読み込む時に整列するのか、読み込みが完了してから整列するのか…という問題(?)が。
お礼
おかげで解決しました>< 手順まで丁寧に教えていただきありがとうござました!!