Как сделать сортировку структуры train по времени с помощью qsort? - C (СИ)
Формулировка задачи:
Как сделать сортировку структуры train по времени с помощью qsort?
#include<stdio.h> #include<stdlib.h> int main() { FILE *f; int j,i; char l; //буква int t=0;//кол-во поездов f=fopen("t.txt","r"); while((l=fgetc(f))!=EOF) { if(l=='\n') { t++; } } printf("poezdov=%i\n",t); struct train{ char train[30];//направление поезда char mark[5]; //метка "св","пв" char time[5]; //время int k;//кол-во букв в названии поезда }train[t]; for(j=0;j<t;j++) { for(i=0;i<30;i++) { train[j].name[i]='\0'; } for(i=0;i<5;i++) { train[j].mark[i]='\0'; } for(i=0;i<5;i++) { train[j].time[i]='\0'; } } rewind(f); for(i=0;i<t;i++){ //заполнение структуры j=0; while((l=fgetc(f))!=' ') { train[i].name[j]=l; j++; train[i].k=j; } j=0; while((l=fgetc(f))!=' ') { train[i].mark[j]=l; j++; } j=0; while((l=fgetc(f))!=' ') { train[i].time[j]=l; j++; } } for(j=0;j<t;j++) //вывод структуры { for(i=0;i<=train[j].k;i++) { printf("%c",train[j].name[i]); } for(i=0;i<5;i++) { printf("%c",train[j].mark[i]); } for(i=0;i<5;i++) { printf("%c",train[j].time[i]); } } fclose(f); return(0); }
Решение задачи: «Как сделать сортировку структуры train по времени с помощью qsort?»
textual
Листинг программы
#include <stdlib.h> #include <time.h> /*...*/ struct train { char destination[30]; //направление поезда int type; //метка "св" - 0, "пв" - 1... time_t traveltime; //время /* int k; */ //кол-во букв в названии поезда - ЧЕВО?!! }; int compare_by_time(const void * a, const void * b) { time_t ta = (*(struct train*)a).traveltime; time_t tb = (*(struct train*)b).traveltime; return ( ta < tb ) ? -1 : ( ta > tb ) ? 1 : 0; } /*...*/ int main(void) { struct train trains[WHATEVER_TRAINS_WE_HAVE]; /* or struct train * trains = malloc(sizeof(struct train) * WHATEVER_TRAINS_WE_HAVE); */ /*....*/ qsort(trains, WHATEVER_TRAINS_WE_HAVE, sizeof(struct train), compare_by_time); /* PROFIT! */ /*...*/
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д