学生平均成绩-6ren">
gpt4 book ai didi

c++ - 如何使用 qsort 对结构(由几个不同的元素组成)进行排序?

转载 作者:太空宇宙 更新时间:2023-11-04 12:59:42 25 4
gpt4 key购买 nike

具体来说,它是关于 .txt 文件中的列表,"char Name"(jmeno) "char Surname"(prijmeni) "float Average"(prumer) --> 学生平均成绩(1-5 级) , 根据平均值用qsort排序。

到目前为止,我的代码如下所示:

FILE *otevriSoubor(char *jmeno, char* mode)
{
FILE *soubor;
soubor = fopen(jmeno, mode);
if (!soubor)
{
printf("spatne jmeno souboru\n");
system("PAUSE");
exit(1);
}
return soubor;
}
int srovnaniprumeru(const void *a, const void *b)
{
int c = ((Student *) a)->prumer;
int d = ((Student *) b)->prumer;
if (c > d) return -1;
if (c < d) return 1;
return 0;
}
int main(void)
{
typedef struct
{
char jmeno[MAXDELKA];
char prijmeni[MAXDELKA];
float prumer;
} Student;
qsort(bakaweb, 5, sizeof(Student), srovnaniprumeru);
system("PAUSE");
return 0;
}

最佳答案

您走在正确的轨道上。以下是需要改进的地方:

  • 您的代码不完整:您没有阅读学生详细信息。您可以为此使用 fscanf()

  • 您根据成绩到 int 的转换进行排序。如果成绩不是整数,这可能是不正确的。

以这种方式完成您的代码并修复您的排序功能:

int srovnaniprumeru(const void *a, const void *b) {
float c = ((const Student *)a)->prumer;
float d = ((const Student *)b)->prumer;
if (c > d) return -1;
if (c < d) return 1;
return 0;
}

关于c++ - 如何使用 qsort 对结构(由几个不同的元素组成)进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44739235/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com