現在、私はかなりの時間を費やして仕事をしているプロジェクト(学校向け、はい)に取り組んでいますが、今は自分自身がエラーで解決できないように見えました。ここで助けを探しています。以下は、完全なコードではなく、必要と思われるコードです。どのように構造体に要素が格納されているリストを整理できますか?
int main(void)
{
typeAssociation association;
get_data(association);
}
エラーが関数sort_by_date
にあり、この機能は、(日付で(associados.txt
によって与えられた)リストをソートすることになっている:私は(ファイルを呼び出した後に)持っている別のファイルに
typedef struct
{
int day, month, year;
} typeDate;
typedef struct
{
int number;
char name[20];
char lastname[20];
typeDate date_of_birth;
} typeCard;
typedef struct
{
int associate_number;
typeCard associates[MAX_ELEM];
} typeAssociation;
typeDate date;
typeCard card;
typeCard aux;
int get_data(typeAssociation association)
{
association.associate_number = 0;
int e, i;
FILE* read = fopen("associados.txt", "r");
for (i = 0; fscanf(read, "%s %s %d %d %d %d", card.name, card.lastname, &card.number,
&date.day, &date.month, &date.year)
!= EOF;
i++)
{
association.associate_number++;
card.date_of_birth = date;
association.associates[i] = card;
}
fclose(read);
printf("Sort list[1/2/3]?");
scanf("%d", &e);
if (e == 1)
{
ordenar_n(&associacao);
}
(...)
}
int sort_by_date(typeAssociation association)
{
int g, m, i;
for (i = 0; i < association.associate_number - 1; i++)
{
m = i;
for (g = i + 1; g < data.year; g++)
{
if (date.year[g] < date.year[m])
{
m = g;
}
if (date.year[g] == date.year[m])
{
if (date.month[g] < date.month[m])
{
m = g;
}
else if (date.month[g] == date.month[m])
{
if (date.day[g] < date.day[m])
{
m = g;
}
}
}
aux = association.associates[i];
association.associates[i] = association.associates[m];
association.associates[m] = aux;
}
}
}
構造体typeDate
に格納されています)(最新のメンバーから最も古いものまで)。私は(私が間違っている場合は私を修正してください)私は一般的なアイデアが行くが、コードはないと思う。誰でも助けてくれますか? (これは私の最初の投稿ですので、間違いがあれば申し訳ありません)。
私のエラーは、sort_by_date関数にあります。
STDのC libには、通常、Googleは通常、これらの機能を使用する例 –
はい、私はリストを並べ替える機能でそこに構築されていることを認識していますが、ポイントイマイチがあり、qソート機能があります: – EngineerWannabe
\それは次のようになります'associacao'の項目ではなく、何らかの理由でグローバル変数' data'と 'cartao'を使用している点を除いて、選択ソートをコーディングしています。グローバル変数がどのように値を取得し、アイテムを並べ替えるためにどの基準を使用するのか説明できますか? –