Вопрос задан 02.10.2026 в 14:15. Предмет Информатика. Спрашивает Романова Софья.

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

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

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

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

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

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

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

Перейти к ответам

Ответы на вопрос

Отвечает Gromyko Dima.

Ниже пример программы на C++ с классом Student, вектором оценок и методом для вычисления среднего балла.

Код:

#include <iostream>
#include <vector>
#include <string>
#include <numeric>

using namespace std;

class Student {
private:
string surname;
string name;
string group;
vector<int> marks;

public:
Student(string s, string n, string g, vector<int> m) {
surname = s;
name = n;
group = g;
marks = m;
}

string getGroup() const {
return group;
}

double getAverageMark() const {
if (marks.empty()) return 0;

int sum = 0;
for (int mark : marks) {
sum += mark;
}

return static_cast<double>(sum) / marks.size();
}

void print() const {
cout << surname << " " << name
<< ", группа: " << group
<< ", средний балл: " << getAverageMark() << endl;
}
};

void printAllStudents(const vector<Student>& students) {
for (const Student& student : students) {
student.print();
}
}

void printStudentsByGroup(const vector<Student>& students, const string& group) {
for (const Student& student : students) {
if (student.getGroup() == group) {
student.print();
}
}
}

double getAverageMarkOfAllStudents(const vector<Student>& students) {
if (students.empty()) return 0;

double sum = 0;
for (const Student& student : students) {
sum += student.getAverageMark();
}

return sum / students.size();
}

void removeWeakestStudent(vector<Student>& students) {
if (students.empty()) return;

int weakestIndex = 0;

for (int i = 1; i < students.size(); i++) {
if (students[i].getAverageMark() < students[weakestIndex].getAverageMark()) {
weakestIndex = i;
}
}

students.erase(students.begin() + weakestIndex);
}

int main() {
vector<Student> students;

students.push_back(Student("Иванов", "Иван", "10А", {5, 4, 5, 4}));
students.push_back(Student("Петров", "Пётр", "10Б", {3, 4, 3, 3}));
students.push_back(Student("Сидорова", "Анна", "10А", {5, 5, 5, 4}));

cout << "Все студенты:" << endl;
printAllStudents(students);

cout << endl << "Студенты группы 10А:" << endl;
printStudentsByGroup(students, "10А");

cout << endl << "Средний балл всех студентов: "
<< getAverageMarkOfAllStudents(students) << endl;

removeWeakestStudent(students);

cout << endl << "После удаления самого слабого студента:" << endl;
printAllStudents(students);

return 0;
}

Функция removeWeakestStudent ищет студента с самым маленьким средним баллом и удаляет его из вектора с помощью erase.

Похожие вопросы

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос