Требуется с помощью структуры заполнить данные о 10 учениках (имя, группа, 5 оценок), и отсортировать их по увеличению среднего балла. Но сортировка ни в какую не дается, и элементы не меняются. В чем ошибка? Пузырьком делал - тоже не меняются.
#include <iostream>
#include <string>
#include <clocale>
#include <utility>
using namespace std;
struct Student { //Описание структуры студента
string name;
int group;
int marks[5];
};
Student part() { //Описание отдельного студента
Student pop;
cout << "Имя студента: ";
cin >> pop.name;
cout << "Его группа: ";
cin >> pop.group;
cout << "Его оценки: ";
for (int i = 0; i < 5; i++) {
cin >> pop.marks[i];
}
cout << endl;
return pop;
}
int main() {
setlocale(LC_ALL, "rus");
const int size = 10; // кол-во студентов
Student records[size]; // Записи о студентах
for (int i = 0; i < 10; i++) {
records[i] = part();
}
// Подсчет суммы оценок каждого ученика
double sumeach[100];
for (int i = 0; i < 10; i++) {
sumeach[i] = 0;
for (int j = 0; j < 5; j++) {
sumeach[i] += records[i].marks[j];
}
}
// Подсчет среднего балла
double miderate[100];
for (int i = 0; i < 10; i++) {
miderate[i] = sumeach[i] / 5;
cout << miderate[i] << " " << records[i].name << endl;
}
system("pause");
//сортировка учеников
for (int j = 0; j < 10; j++) {
for (int i = 0; i < 9; i++) {
if (miderate[i] > miderate[i + 1]) {
swap (records[i].name, records[i + 1].name);
swap (records[i].group, records[i + 1].group);
swap(records[i].marks, records[i + 1].marks);
}
}
}
//вывод учеников
for (int i = 0; i < 10; i++) {
cout << records[i].name << " " << records[i].group << " ";
for (int j = 0; j < 5; j++) {
cout << records[i].marks[j] << " ";
}
cout << endl;
}
system("pause");
return 0;
}