C++
Реализовать класс Студент (фамилия, имя, группа, средний балл).
В мейне реализовать вектор студентов, и создать следующие функции:
1. Функция принимает вектор студентов, и выводит всех студентов на экран.
2. Функция принимает вектор студентов и название группы.
Функция выводит только тех студентов, которые принадлежат этой группе.
3. Функция принимает вектор студентов и ВОЗВРАЩАЕТ средний балл всех студентов.
4. Функция принимает вектор студентов и УДАЛЯЕТ из него самого слабого студента. (erase).
5*. У студента сделать не поле средний балл, а вектор оценок, и метод, который будет считать и возвращать средний балл.
Ответы
Ответ:
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
class Student {
public:
// Конструктор класса Student
Student(const std::string& lastName, const std::string& firstName, const std::string& group, double averageScore)
: lastName(lastName), firstName(firstName), group(group), averageScore(averageScore) {}
// Метод для получения среднего балла студента
double getAverageScore() const {
return averageScore;
}
// Перегрузка оператора вывода для вывода информации о студенте
friend std::ostream& operator<<(std::ostream& os, const Student& student) {
os << "Фамилия: " << student.lastName << ", Имя: " << student.firstName << ", Группа: " << student.group
<< ", Средний балл: " << student.averageScore;
return os;
}
// Перегрузка оператора сравнения для сравнения студентов по среднему баллу
bool operator<(const Student& other) const {
return averageScore < other.averageScore;
}
private:
std::string lastName;
std::string firstName;
std::string group;
double averageScore;
};
// Функция для вывода всех студентов в векторе
void printStudents(const std::vector<Student>& students) {
for (const Student& student : students) {
std::cout << student << std::endl;
}
}
// Функция для вывода студентов из определенной группы
void printStudentsInGroup(const std::vector<Student>& students, const std::string& group) {
for (const Student& student : students) {
if (student.group == group) {
std::cout << student << std::endl;
}
}
}
// Функция для вычисления среднего балла всех студентов
double calculateAverageScore(const std::vector<Student>& students) {
double totalScore = 0.0;
for (const Student& student : students) {
totalScore += student.getAverageScore();
}
return totalScore / students.size();
}
// Функция для удаления самого слабого студента из вектора
void removeWeakestStudent(std::vector<Student>& students) {
if (!students.empty()) {
auto weakestStudent = std::min_element(students.begin(), students.end());
students.erase(weakestStudent);
}
}
int main() {
// Создаем вектор студентов
std::vector<Student> students;
// Добавляем несколько студентов в вектор
students.push_back(Student("Смит", "Джон", "Группа A", 85.5));
students.push_back(Student("Джонсон", "Мэри", "Группа B", 91.0));
students.push_back(Student("Андерсон", "Питер", "Группа A", 78.0));
students.push_back(Student("Браун", "Сьюзан", "Группа C", 89.5));
// Выводим всех студентов
std::cout << "Все студенты:" << std::endl;
printStudents(students);
// Выводим студентов из определенной группы
std::string groupToPrint = "Группа A";
std::cout << "\nСтуденты из группы " << groupToPrint << ":" << std::endl;
printStudentsInGroup(students, groupToPrint);
// Вычисляем средний балл всех студентов
double average = calculateAverageScore(students);
std::cout << "\nСредний балл всех студентов: " << average << std::endl;
// Удаляем самого слабого студента
removeWeakestStudent(students);
std::cout << "\nПосле удаления самого слабого студента:" << std::endl;
printStudents(students);
return 0;
}