C++
Реализовать класс Студент (фамилия, имя, группа, средний балл).
В main реализовать вектор студентов и создать следующие функции:
1. Функция принимает вектор студентов и выводит всех студентов на экран.
2. Функция принимает вектор студентов и название группы. Функция выводит только тех студентов, которые принадлежат этой группе.
3. Функция принимает вектор студентов и ВОЗВРАЩАЕТ средний балл всех студентов.
4. Функция принимает вектор студентов и УДАЛЯЕТ из него самого слабого студента (erase).
5*. У студента сделать не поле средний балл, а вектор оценок, и метод, который будет считать и возвращать средний балл.
Ответы на вопрос
Ниже пример программы на 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.
Похожие вопросы
Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili

