#include <iostream>
#include <string>
#include <stdexcept>
class Student {
private:
std::string name;
int age;
double averageGrade;
public:
// Конструктор с параметрами
Student(const std::string& name, int age, double averageGrade) {
setName(name);
setAge(age);
setAverageGrade(averageGrade);
}
// Геттеры
std::string getName() const {
return name;
}
int getAge() const {
return age;
}
double getAverageGrade() const {
return averageGrade;
}
// Сеттеры с валидацией
void setName(const std::string& newName) {
if (newName.empty()) {
throw std::invalid_argument("Имя не может быть пустым.");
}
name = newName;
}
void setAge(int newAge) {
if (newAge <= 0) {
throw std::invalid_argument("Возраст должен быть положительным.");
}
age = newAge;
}
void setAverageGrade(double newGrade) {
if (newGrade < 0.0 || newGrade > 10.0) {
throw std::invalid_argument("Средний балл должен быть от 0 до 10.");
}
averageGrade = newGrade;
}
// Метод для вывода информации о студенте
void printInfo() const {
std::cout << "Имя: " << name
<< ", Возраст: " << age
<< ", Средний балл: " << averageGrade << std::endl;
}
// Метод для оценки успеваемости
std::string evaluatePerformance() const {
if (averageGrade > 8.0) {
return "Отлично";
} else if (averageGrade >= 6.0) {
return "Хорошо";
} else if (averageGrade >= 4.0) {
return "Удовлетворительно";
} else {
return "Неудовлетворительно";
}
}
// Метод проверки совершеннолетия
bool isAdult() const {
return age >= 18;
}
};
// Пример использования
int main() {
try {
Student s1("Иван", 20, 9.1);
Student s2("Мария", 17, 7.5);
Student s3("Алексей", 18, 5.2);
Student students[] = {s1, s2, s3};
for (const Student& student : students) {
student.printInfo();
std::cout << "Оценка: " << student.evaluatePerformance() << std::endl;
std::cout << "Совершеннолетний: " << (student.isAdult() ? "Да" : "Нет") << "\n" << std::endl;
}
} catch (const std::exception& ex) {
std::cerr << "Ошибка: " << ex.what() << std::endl;
}
return 0;
}