具体来说,它是关于.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;
}
答案 0 :(得分: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;
}