2010-11-24 28 views
1

関数内のchar firstNameをどのように並べ替えることができ、名前はテキストファイルからすでに読み込まれ、外部ライブラリも同様に使用できます すべての学生名はa学生レコードC言語を使用して構造体にchar名をソートする

struct student{ 
    char*lastName; /*name of the student*/ 
    char*firstName; 
    int age;  /*age of the student*/ 
    float grade[3]; 
} 
+0

コードを選択してCtrl + Kキーを押すと、コードを書式設定できます。プレビューを使用します。 – EboMike

+0

また、あなたの質問では十分な情報が得られていません。どのような配列/コレクションがありますか?この構造体は何も教えてくれません。 – EboMike

答えて

0

の配列に読み込まれるテキストファイルは、簡単な方法は、あなたが外部ライブラリを使用することを許可されていないと仮定すると、バブルソートです。 struct studentの配列が既にソートされているかどうかを判断する関数を記述します。そのような配列を歩き回って、隣接するペアの学生を比較する関数を書く。彼らが故障している場合は、交換してください。最初の関数の結果をwhileループの条件節として使用し、2番目の関数を本体として使用します。

もしあなたがそれを使用することが許されているなら、qsort()からstdlib.hまでが最良のアプローチです。

+0

挿入ソートは、通常、タッチが簡単でタッチが速くなります。また、 'qsort()'は外部ライブラリではありませんが、C標準ライブラリに含まれています。 –

+0

今、私はどのようにqsort()を使用するかについて取り組んでいます –

4

qsort関数は通常、配列をソートするためにCで使用されます。パラメータの1つは、比較関数へのポインタです。あなたが望む任意の方法で2つのポインタを比較するように関数を記述します。異なる比較関数を使用することもできるので、実行時に適用される選択肢があります。

+0

私は左、右、学生としてどのように宣言すべきですか? –

+0

qsort(3)のマニュアルページを参照すると、StudentCompare()が 'compar'引数であることがわかります。 struct student students [100];があれば、qsort(students、100、sizeof(student struct)、StudentCompare)を呼び出します。 – Wade

+0

また、StudentCompare()の実装では単に「student」ではなく「struct student」であるべきだと思います。 – Wade

関連する問題