• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:C言語のプログラムについて)

C言語のプログラムで得点を降順に整列して表示する方法と比較回数を求める方法

このQ&Aのポイント
  • C言語のプログラムでリスト処理により得点を降順に整列し、その結果を表示する方法を教えてください。
  • また、整列する際に要素どうしを比較する回数も求める方法も教えていただけると助かります。
  • プログラムはファイルを開いてから書き始める必要がありますが、どのように書けば良いのか分からなくなってしまいました。アドバイスをお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

 どうやら配列への読み込みすら判らないと言う事ですかね? 参考までに読込とソート部分をば 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 ;//ソート終わり } }  こんなとこですかね。 ああ、コンパイルはしてないので、エラー抜きは自前でやってね。

ksy9z
質問者

お礼

おかげで解決しました>< 手順まで丁寧に教えていただきありがとうござました!!

その他の回答 (1)

  • Wr5
  • ベストアンサー率53% (2173/4061)
回答No.2

>リスト処理による挿入法で 双方向にするか片方向にするかは不明ですが…連結リスト構造にするなら構造体のメンバが足りないようですが…。 # 次のノード・前のノードを指すポインタがないと連結リストになりませんし。 そこらヘンがなんとかなったとして… >ファイルを開いてからこの先どのように書けばいいのかわからなくなりました。 ファイルから読み込んでリスト構造に追加して下さい。 >得点の降順に整列して表示する。また、整列する際に要素どうしを比較した回数も表示する。 ファイルから読み込む時に整列するのか、読み込みが完了してから整列するのか…という問題(?)が。

関連するQ&A