Advertisement
Cinder1986

lab16 c++

Feb 2nd, 2023
629
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.03 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3. #include <windows.h>
  4.  
  5. #define LABOURS 4
  6. #define STUDENTS_TAKEN 3
  7. #define MAX_MARK 10
  8. #define MIN_MARK 0
  9. #define MIN_YEAR 1900
  10. #define MAX_YEAR 2023
  11. #define MIN_GROUP 0
  12. #define MAX_GROUP 65535
  13. #define MIN_INTERESTING_MARK 3
  14. #define MAX_INTERESTRING_MARK 4
  15.  
  16. #define NAME_REQUEST "Введите Ф.И.О. студента: "
  17. #define BIRTHYEAR_REQUEST "Введите год рождения студента: "
  18. #define GROUP_REQUEST "Введите группу студента: "
  19. #define PHYS_REQUEST "Введите оценку студента по физике: "
  20. #define MATH_REQUEST "Введите оценку студента по математике: "
  21. #define COSC_REQUEST "Введите оценку студента по информатике: "
  22. #define CHEM_REQUEST "Введите оценку студента по химии: "
  23.  
  24. using namespace std;
  25.  
  26. struct Student {
  27.     string name;
  28.     int birthYear;
  29.     int group;
  30.     int physics;
  31.     int math;
  32.     int compSc;
  33.     int chemistry;
  34.     //подсчёт среднего балла
  35.     float average(void) {
  36.         return (physics + math + compSc + chemistry) / LABOURS;
  37.     }
  38.     //проверяем, входят ли оценки в интервал
  39.     bool checkMarks(int min, int max) {
  40.         return physics > max || physics < min || math > max || math < min || compSc > max || compSc < min || chemistry > max || chemistry < min ? false : true;
  41.     }
  42.     //вывод всей инфы
  43.     void printInfo(void) {
  44.         cout << "Ф.И.О. - " << name <<
  45.         "\nГод рождения - " << birthYear <<
  46.         "\nГруппа - " << group <<
  47.         "\nОценки\nФизика - " << physics <<
  48.         "\nМатематика - " << math <<
  49.         "\nИнформатика - " << compSc <<
  50.         "\nХимия - " << chemistry <<
  51.         "\nСредний балл - " << average() << endl;
  52.     }
  53. };
  54. //проверяем число на вхождение в диапазон [min;max] и корректность
  55. int getInt(int min, int max) {
  56.     int value;
  57.     bool isCorrect;
  58.     do {
  59.         isCorrect = true;
  60.         cin >> value;
  61.         if (cin.fail()) {
  62.             cout << "Введено некорректное значение. Введите число ещё раз.\n";
  63.             isCorrect = false;
  64.             cin.clear();
  65.             while (cin.get() != '\n');
  66.         }
  67.         if (value > max || value < min) {
  68.             cout << "Число выходит за границы [" << min << ";" << max << "]. Введите число ещё раз.\n";
  69.             isCorrect = false;
  70.         }
  71.     } while (!isCorrect);
  72.     return value;
  73. }
  74. //чтение инфы о студенте
  75. Student getStudentInfo(void) {
  76.     Student student;
  77.     cout << NAME_REQUEST;
  78.     getline(cin, student.name);
  79.     cout << BIRTHYEAR_REQUEST;
  80.     student.birthYear = getInt(MIN_YEAR, MAX_YEAR);
  81.     cout << GROUP_REQUEST;
  82.     student.group = getInt(MIN_GROUP, MAX_GROUP);
  83.     cout << PHYS_REQUEST;
  84.     student.physics = getInt(MIN_MARK, MAX_MARK);
  85.     cout << MATH_REQUEST;
  86.     student.math = getInt(MIN_MARK, MAX_MARK);
  87.     cout << COSC_REQUEST;
  88.     student.compSc = getInt(MIN_MARK, MAX_MARK);
  89.     cout << CHEM_REQUEST;
  90.     student.chemistry = getInt(MIN_MARK, MAX_MARK);
  91.     while (cin.get() != '\n');
  92.     return student;
  93. }
  94.  
  95. int main() {
  96.     SetConsoleOutputCP(1251);
  97.     SetConsoleCP(1251);
  98.     Student students[STUDENTS_TAKEN];
  99.     for (int i = 0; i < STUDENTS_TAKEN; i++) {
  100.         cout << "Введите информацию о " << i + 1 << "м студенте.\n";
  101.         students[i] = getStudentInfo();
  102.     }
  103.     cout << "Введите интересующую вас группу: ";
  104.     int reqGroup = getInt(MIN_GROUP, MAX_GROUP);
  105.     for (int i = 0; i < STUDENTS_TAKEN; i++) {
  106.         if (students[i].group == reqGroup && students[i].checkMarks(MIN_INTERESTING_MARK, MAX_INTERESTRING_MARK))
  107.             students[i].printInfo();
  108.     }
  109.     return 0;
  110. }
  111.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement