Предмет: Информатика, автор: Kukuwka0Ha0DepeBe

C++
Реализовать класс Студент (фамилия, имя, группа, средний балл).

В мейне реализовать вектор студентов, и создать следующие функции:

1. Функция принимает вектор студентов, и выводит всех студентов на экран.

2. Функция принимает вектор студентов и название группы.
Функция выводит только тех студентов, которые принадлежат этой группе.

3. Функция принимает вектор студентов и ВОЗВРАЩАЕТ средний балл всех студентов.

4. Функция принимает вектор студентов и УДАЛЯЕТ из него самого слабого студента. (erase).

5*. У студента сделать не поле средний балл, а вектор оценок, и метод, который будет считать и возвращать средний балл.

Ответы

Автор ответа: netbro99
0

Ответ:

#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;

}

Похожие вопросы
Предмет: Химия, автор: jeka0563
Предмет: Математика, автор: a33194147