Qsort() для сортировки структур по дате (struct tm) - C (СИ)
Формулировка задачи:
Здравствуйте. Стоит задача отсортировать массив структур timetable, одно из поле которой - вложенная стандартная структура struct tm. Для сортировки через qsort нужно написать функцию сравнения. Написал такую:, но массив не сортируется (хотя его порядок изменяется). Вопрос: как правильно написать функцию сравнения для такой сортировки?
int comp(const void *a, const void *b) { struct timetable tt1, tt2; tt1 = *((struct timetable*)a); tt2 = *((struct timetable*)b); time_t t1 = mktime(&(tt1.date)); time_t t2 = mktime(&(tt2.date)); double diffSecs = difftime(t1, t2); if (!diffSecs) return 0; if (diffSecs<0) return -1; if (diffSecs>0) return 1; }
Решение задачи: «Qsort() для сортировки структур по дате (struct tm)»
textual
Листинг программы
int cmp(const void* a, const void* b) { return mktime(&((struct timetable*)b)->date) - mktime(&((struct timetable*)a)->date); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д