• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:c言語 select sort)

c言語のselect sortプログラムコードで問題が発生しています

このQ&Aのポイント
  • c言語のselect sortプログラムコードで問題が発生しています。
  • プログラムコードにエラーがあり、正しく動作しません。
  • ファイルの読み込みやデータの入れ替えなどの処理が誤っています。

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

  • ベストアンサー
  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.1

エラーの原因は main 関数の定義が2つもあること。 swap関数だけ使いたいなら、後半のソースのmain関数の定義は不要。 あるいは、swapの定義だけ抜き出せば、後半のソース自体が不要。 > swapのプログラムコード > sort.cのプログラムコード 内容からすると逆のようですが。 > for(i=0;i<100;i++){ > fscanf(fp,"%d,",&a[i]); //ファイルから読み込み処理。// > } ここで100個読んでるのに、あとは10個しか使っていない。 そもそも100個読めてるかも疑問。fscanfを使うときはエラーチェックを。 > /*1.ソートすべきデータの中で最大のデータを見つけ、 > 2.そのデータを最後のデータと入れ替える。 > 最大データは配列のどこにあるのか⇒maxi >             その値⇒max とする。*/ > //データが10個の場合 多分課題を出した人がヒントとして書いたものと思われる。 ここから > swap(&a[maxi],&a[9-j]); > /* コマンド $cc sort.c swap.c */ ここまでは、ほぼ説明の通り。(謎の変数jがあるけど) 最大値と列の最後(a[9])を入れ替えただけなので、残り9個はソートされていないまま。 だから、次はその9個の中から、最大値と列の最後(a[9-1])を入れ替える 次は、残りの8個の中から、最大値と列の最後(a[9-2])を入れ替える 次は、残り7個から... ...と最後まで続けるのが、選択ソートのやりかた。 それができると、10個のソートはできる。でも、プログラムからすると、100個のデータを並びかえる必要があるようだから、どうしたらいいかを考える。 ここから下の > *py = n; > // } までは何がやりたいのか、まったく理解できません。

mai5891
質問者

お礼

回答ありがとうございます。 無事、できました。

関連するQ&A