Загрузка данных
#include <iostream>
#include <string>
#include <array>
#include <iomanip>
#include <algorithm>
using namespace std;
// Структура студента
struct Student {
string fullName; // ФИО
int groupNumber; // Номер группы
array<int, 5> grades; // 5 оценок
double averageGrade; // Средний балл
bool isScholarship; // Получает ли стипендию
};
// Функция расчёта среднего балла
void calculateAverage(Student& student) {
int sum = 0;
for (int grade : student.grades) {
sum += grade;
}
student.averageGrade = static_cast<double>(sum) / student.grades.size();
// Стипендия при среднем балле >= 4.5
student.isScholarship = student.averageGrade >= 4.5;
}
// Функция вывода одного студента
void printStudent(const Student& student) {
cout << left
<< setw(22) << student.fullName
<< setw(10) << student.groupNumber;
for (int grade : student.grades) {
cout << setw(4) << grade;
}
cout << setw(10) << fixed << setprecision(2)
<< student.averageGrade
<< setw(12)
<< (student.isScholarship ? "Да" : "Нет")
<< endl;
}
// Функция вывода всех студентов
void printStudents(const array<Student, 5>& students) {
cout << left
<< setw(22) << "ФИО"
<< setw(10) << "Группа"
<< setw(4) << "О1"
<< setw(4) << "О2"
<< setw(4) << "О3"
<< setw(4) << "О4"
<< setw(4) << "О5"
<< setw(10) << "Средний"
<< setw(12) << "Стипендия"
<< endl;
cout << string(100, '-') << endl;
for (const Student& student : students) {
printStudent(student);
}
}
// Поиск студентов по номеру группы
void findByGroup(const array<Student, 5>& students, int group) {
bool found = false;
cout << "\nСтуденты группы " << group << ":\n";
for (const Student& student : students) {
if (student.groupNumber == group) {
cout << " - " << student.fullName
<< ", средний балл: "
<< fixed << setprecision(2)
<< student.averageGrade << endl;
found = true;
}
}
if (!found) {
cout << "Студентов этой группы нет.\n";
}
}
// Вывод студентов, получающих стипендию
void printScholarshipStudents(const array<Student, 5>& students) {
cout << "\nСтуденты, получающие стипендию:\n";
bool found = false;
for (const Student& student : students) {
if (student.isScholarship) {
cout << " - " << student.fullName
<< " (средний балл: "
<< fixed << setprecision(2)
<< student.averageGrade << ")\n";
found = true;
}
}
if (!found) {
cout << "Таких студентов нет.\n";
}
}
int main() {
// Массив из 5 студентов
array<Student, 5> students = {
Student{"Иванов Иван Иванович", 101,
{5, 5, 4, 5, 5}, 0, false},
Student{"Петров Петр Петрович", 102,
{4, 3, 4, 4, 3}, 0, false},
Student{"Сидоров Алексей Сергеевич", 101,
{5, 5, 5, 4, 5}, 0, false},
Student{"Кузнецов Дмитрий Олегович", 103,
{3, 4, 4, 3, 4}, 0, false},
Student{"Смирнов Максим Андреевич", 102,
{5, 4, 5, 5, 5}, 0, false}
};
// Расчёт среднего балла для каждого студента
for (Student& student : students) {
calculateAverage(student);
}
// Вывод исходного списка
cout << "СПИСОК СТУДЕНТОВ\n";
cout << "================\n";
printStudents(students);
// Поиск по номеру группы
int group;
cout << "\nВведите номер группы для поиска: ";
cin >> group;
findByGroup(students, group);
// Список стипендиатов
printScholarshipStudents(students);
// Сортировка по среднему баллу от большего к меньшему
sort(students.begin(), students.end(),
[](const Student& a, const Student& b) {
return a.averageGrade > b.averageGrade;
});
// Вывод после сортировки
cout << "\nСТУДЕНТЫ ПО СРЕДНЕМУ БАЛЛУ\n";
cout << "==========================\n";
printStudents(students);
return 0;
}