Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <string>
- #include <windows.h>
- #define LABOURS 4
- #define STUDENTS_TAKEN 3
- #define MAX_MARK 10
- #define MIN_MARK 0
- #define MIN_YEAR 1900
- #define MAX_YEAR 2023
- #define MIN_GROUP 0
- #define MAX_GROUP 65535
- #define MIN_INTERESTING_MARK 3
- #define MAX_INTERESTRING_MARK 4
- #define NAME_REQUEST "Введите Ф.И.О. студента: "
- #define BIRTHYEAR_REQUEST "Введите год рождения студента: "
- #define GROUP_REQUEST "Введите группу студента: "
- #define PHYS_REQUEST "Введите оценку студента по физике: "
- #define MATH_REQUEST "Введите оценку студента по математике: "
- #define COSC_REQUEST "Введите оценку студента по информатике: "
- #define CHEM_REQUEST "Введите оценку студента по химии: "
- using namespace std;
- struct Student {
- string name;
- int birthYear;
- int group;
- int physics;
- int math;
- int compSc;
- int chemistry;
- //подсчёт среднего балла
- float average(void) {
- return (physics + math + compSc + chemistry) / LABOURS;
- }
- //проверяем, входят ли оценки в интервал
- bool checkMarks(int min, int max) {
- return physics > max || physics < min || math > max || math < min || compSc > max || compSc < min || chemistry > max || chemistry < min ? false : true;
- }
- //вывод всей инфы
- void printInfo(void) {
- cout << "Ф.И.О. - " << name <<
- "\nГод рождения - " << birthYear <<
- "\nГруппа - " << group <<
- "\nОценки\nФизика - " << physics <<
- "\nМатематика - " << math <<
- "\nИнформатика - " << compSc <<
- "\nХимия - " << chemistry <<
- "\nСредний балл - " << average() << endl;
- }
- };
- //проверяем число на вхождение в диапазон [min;max] и корректность
- int getInt(int min, int max) {
- int value;
- bool isCorrect;
- do {
- isCorrect = true;
- cin >> value;
- if (cin.fail()) {
- cout << "Введено некорректное значение. Введите число ещё раз.\n";
- isCorrect = false;
- cin.clear();
- while (cin.get() != '\n');
- }
- if (value > max || value < min) {
- cout << "Число выходит за границы [" << min << ";" << max << "]. Введите число ещё раз.\n";
- isCorrect = false;
- }
- } while (!isCorrect);
- return value;
- }
- //чтение инфы о студенте
- Student getStudentInfo(void) {
- Student student;
- cout << NAME_REQUEST;
- getline(cin, student.name);
- cout << BIRTHYEAR_REQUEST;
- student.birthYear = getInt(MIN_YEAR, MAX_YEAR);
- cout << GROUP_REQUEST;
- student.group = getInt(MIN_GROUP, MAX_GROUP);
- cout << PHYS_REQUEST;
- student.physics = getInt(MIN_MARK, MAX_MARK);
- cout << MATH_REQUEST;
- student.math = getInt(MIN_MARK, MAX_MARK);
- cout << COSC_REQUEST;
- student.compSc = getInt(MIN_MARK, MAX_MARK);
- cout << CHEM_REQUEST;
- student.chemistry = getInt(MIN_MARK, MAX_MARK);
- while (cin.get() != '\n');
- return student;
- }
- int main() {
- SetConsoleOutputCP(1251);
- SetConsoleCP(1251);
- Student students[STUDENTS_TAKEN];
- for (int i = 0; i < STUDENTS_TAKEN; i++) {
- cout << "Введите информацию о " << i + 1 << "м студенте.\n";
- students[i] = getStudentInfo();
- }
- cout << "Введите интересующую вас группу: ";
- int reqGroup = getInt(MIN_GROUP, MAX_GROUP);
- for (int i = 0; i < STUDENTS_TAKEN; i++) {
- if (students[i].group == reqGroup && students[i].checkMarks(MIN_INTERESTING_MARK, MAX_INTERESTRING_MARK))
- students[i].printInfo();
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement