fork download
  1. #include <iostream>
  2. #include <string>
  3. #include <stdexcept>
  4.  
  5. class Student {
  6. private:
  7. std::string name;
  8. int age;
  9. double averageGrade;
  10.  
  11. public:
  12. // Конструктор с параметрами
  13. Student(const std::string& name, int age, double averageGrade) {
  14. setName(name);
  15. setAge(age);
  16. setAverageGrade(averageGrade);
  17. }
  18.  
  19. // Геттеры
  20. std::string getName() const {
  21. return name;
  22. }
  23.  
  24. int getAge() const {
  25. return age;
  26. }
  27.  
  28. double getAverageGrade() const {
  29. return averageGrade;
  30. }
  31.  
  32. // Сеттеры с валидацией
  33. void setName(const std::string& newName) {
  34. if (newName.empty()) {
  35. throw std::invalid_argument("Имя не может быть пустым.");
  36. }
  37. name = newName;
  38. }
  39.  
  40. void setAge(int newAge) {
  41. if (newAge <= 0) {
  42. throw std::invalid_argument("Возраст должен быть положительным.");
  43. }
  44. age = newAge;
  45. }
  46.  
  47. void setAverageGrade(double newGrade) {
  48. if (newGrade < 0.0 || newGrade > 10.0) {
  49. throw std::invalid_argument("Средний балл должен быть от 0 до 10.");
  50. }
  51. averageGrade = newGrade;
  52. }
  53.  
  54. // Метод для вывода информации о студенте
  55. void printInfo() const {
  56. std::cout << "Имя: " << name
  57. << ", Возраст: " << age
  58. << ", Средний балл: " << averageGrade << std::endl;
  59. }
  60.  
  61. // Метод для оценки успеваемости
  62. std::string evaluatePerformance() const {
  63. if (averageGrade > 8.0) {
  64. return "Отлично";
  65. } else if (averageGrade >= 6.0) {
  66. return "Хорошо";
  67. } else if (averageGrade >= 4.0) {
  68. return "Удовлетворительно";
  69. } else {
  70. return "Неудовлетворительно";
  71. }
  72. }
  73.  
  74. // Метод проверки совершеннолетия
  75. bool isAdult() const {
  76. return age >= 18;
  77. }
  78. };
  79.  
  80. // Пример использования
  81. int main() {
  82. try {
  83. Student s1("Иван", 20, 9.1);
  84. Student s2("Мария", 17, 7.5);
  85. Student s3("Алексей", 18, 5.2);
  86.  
  87. Student students[] = {s1, s2, s3};
  88.  
  89. for (const Student& student : students) {
  90. student.printInfo();
  91. std::cout << "Оценка: " << student.evaluatePerformance() << std::endl;
  92. std::cout << "Совершеннолетний: " << (student.isAdult() ? "Да" : "Нет") << "\n" << std::endl;
  93. }
  94. } catch (const std::exception& ex) {
  95. std::cerr << "Ошибка: " << ex.what() << std::endl;
  96. }
  97.  
  98. return 0;
  99. }
Success #stdin #stdout 0s 5316KB
stdin
Standard input is empty
stdout
Имя: Иван, Возраст: 20, Средний балл: 9.1
Оценка: Отлично
Совершеннолетний: Да

Имя: Мария, Возраст: 17, Средний балл: 7.5
Оценка: Хорошо
Совершеннолетний: Нет

Имя: Алексей, Возраст: 18, Средний балл: 5.2
Оценка: Удовлетворительно
Совершеннолетний: Да