2

わかりましたので、5 つの平日を順番にリストする配列があります。

char *days[5]={"Monday","Tuesday","Wednesday","Thursday","Friday"};

今、いくつかの構造体配列があり、要素の 1 つは曜日であり、順序が正しくありません。次のようにランダムな順序になっています。

d[0].day is "Thursday"
d[1].day is "Monday"
d[2].day is "Wednesday"

不便なことに、日はアルファオーダーではありません:pなので、ある種の種類をどのように実装できるか疑問に思います=/

4

3 に答える 3

2

曜日は enum にしたほうがいいと思います。お気に入り:

enum Days{
    Monday = 1,
    Tuesday,
    Wednesday,
    Thursday,
    Friday
}

次に、次のような関数で日のデータを取得します

void  printDays(enum d,char * buffer)
{
 const char *daysName[] = {"Monday","Tuesday","Wednesday","Thursday","Friday"};
 memcpy(buffer,daysName[d-1]);
}

次に、使用するとき

 d[0].day is "Thursday"
d[1].day is "Monday"
d[2].day is "Wednesday"

簡単にソートできます。実際には、1、2、3、4、5 を格納するだけです。

于 2013-08-07T05:37:32.533 に答える
1

OK、これを正しく並べ替えるには、2 つの構造を比較して、どちらが早いかを確認できる必要があります。それができたら、お気に入りの並べ替えアルゴリズムで並べ替えに使用できます。

s1とを変換するには、とを数値 (月曜日は 0、火曜日は 1 など) に変換してから、数値を比較するs2必要があります。日の文字列を数値に変換するのは簡単です。配列をループして、配列内のどのエントリが と同一であるかを確認します。s1.days2.daydayss1.day

于 2013-08-07T05:27:06.900 に答える
0

パラメータとして曜日を受け取り、int を返す関数を作成します。日曜日の場合は 1、月曜日の場合は 2 などを返します。

次に、パラメーターとして 2 日を受け取る別の関数を作成し、最初の関数を使用して前の日を返します。

これら 2 つの関数を使用して、標準的な並べ替えアルゴリズムを実装できます。番号の並べ替えと同じです。

または、

構造体を含む配列と同じサイズの別の配列を持つことができます。次に、構造体を新しい配列にコピーしますが、最初にすべての日曜日をコピーし、次にすべての月曜日というようにコピーします。

于 2013-08-07T05:37:23.483 に答える