Страницы

Поиск по вопросам

вторник, 21 мая 2019 г.

Как сортировать массив структур по одному из параметров структуры?

struct Student { char last_name[m]; char name[m]; char surname[m]; int proga[n]; int sda[n]; int mat_analiz[n]; int lin_algebra[n]; int sum_ball; }student[k];
Подскажите как отсортировать данную структуру по переменой sum_ball, и если совпадает то по last_name Как ни пробовал, ничего не получается, просто выдает какую-то ахинею. Раньше с таким не приходилось работать.
Student temp;
for (int i = 0; i < k; i++) { for (int j = i; j < k; j++) { if (student[j].sum_ball < student[i].sum_ball) { temp.last_name = student[i].last_name; student[i].last_name = student[j].last_name; student[j].last_name = temp; //и так дали с другими
} } }
Ну например вот так, с массивами так можно а с структурами как? Это ж не правильно я понимаю


Ответ

Требуемый компаратор может выглядеть, например, так:
[](const Student&a, const Student&b) { if (a.sum_ball < b.sum_ball) return true; if (a.sum_ball == b.sum_ball) return strcmp(a.last_name,b.last_name) < 0; return false; }
Вроде бы так...

Комментариев нет:

Отправить комментарий