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;
}
Вроде бы так...
Комментариев нет:
Отправить комментарий