Страницы

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

среда, 4 марта 2020 г.

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

#cpp #visual_cpp #сортировка #структуры


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;
            //и так дали с другими 

        }
    }
}


Ну например вот так, с массивами так можно а с структурами как? Это ж не правильно
я понимаю
    


Ответы

Ответ 1



Требуемый компаратор может выглядеть, например, так: [](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; } Вроде бы так...

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

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