Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /////////////////////////////////////////////////////////// Lab 6 Ex.2.cpp
- #include <iostream>
- #include <clocale>
- #include <string>
- #include <vector>
- #include <iterator>
- #include <windows.h>
- #include "Funcs.h"
- using namespace std;
- int main()
- {
- setlocale(LC_ALL, "RU"); // Для корректного отображения русского языка
- SetConsoleCP(1251); //
- SetConsoleOutputCP(1251); //
- Student group[Constants::numStud]{}; // Создаем массив с количеством эелементов указанных в Constants::
- cout << "Введите ФИО студента: \n";
- getGroup(group); // Заносим введенные имена в массив
- cout << endl;
- for (int i{ 0 }; i < Constants::numStud; i++) // Выполняем до тех пор, пока i меньше числа студентов
- getScoreRate(group, i); // Заносим введенные оценки в массив
- for (int i{ 0 }; i < Constants::numStud; i++) // Считаем и записываем балы за КТ каждого студента
- {
- calcKT(group, i);
- Auto(group, i);
- }
- // Выводим таблицу
- cout << "\nТаблица результатов: \n" << "N\t" << "ФИО\t\t" << "KT-1\t" << "KT-2\t" << "Итог\t" << "Автомат";
- for (int i{ 0 }; i < Constants::numStud; i++)
- {
- cout << boolalpha << "\n" << group[i].id << "\t" << group[i].fio << "\t\t" << group[i].KT1 << "\t" << group[i].KT2 << "\t" << group[i].allKT << "\t" << group[i].Auto;
- }
- cout << endl;
- return 0;
- }
- /////////////////////////////////////////////////////////// Funcs.cpp
- #include <iostream>
- #include "Funcs.h"
- using namespace std;
- void getGroup(Student* array) // Функция для заполнения ФИО студента
- {
- for (int i{ 0 }; i < Constants::numStud; ++i)
- {
- array[i].id = i + 1;
- cout << "студент N" << array[i].id << ": ";
- getline(cin >> ws, array[i].fio);
- }
- }
- void getScoreRate(Student* array, int num) // Функция для получения оценок студента
- {
- if (num < 0 || num > Constants::numStud - 1)
- return;
- cout << "Оценки студента " << array[num].fio << ": ";
- for (int i{0}; i < Constants::scoreRate1 + Constants::scoreRate2; i++)
- cin >> array[num].score[i];
- if (isMarsOk(array[num].score, Constants::scoreRate1 + Constants::scoreRate2))
- return;
- else
- {
- cout << "Вы ввели неверную оценку, введите оценки еще раз: ";
- getScoreRate(array, num);
- }
- }
- void calcKT(Student* array, int num)
- {
- double sumScoreRate1{ 0.0 };
- double sumScoreRate2{ 0.0 };
- // Расчет 1-ой КТ
- for (int i{ 0 }; i < Constants::scoreRate1; i++)
- {
- sumScoreRate1 += (array[num].score[i] / static_cast<double>(Constants::maxMark));
- }
- double KT1 = (Constants::maxMarkKT / Constants::scoreRate1) * sumScoreRate1;
- // Расчет 2-ой КТ
- for (int i{Constants::scoreRate1}; i < (Constants::scoreRate2) * 2; i++)
- {
- sumScoreRate2 += (array[num].score[i] / static_cast<double>(Constants::maxMark));
- }
- double KT2 = (Constants::maxMarkKT / Constants::scoreRate2) * sumScoreRate2;
- // Расчет итога
- int allKT = 0;
- allKT = ((KT1 + KT2) / (Constants::maxMarkKT + Constants::maxMarkKT)) * Constants::maxMarkAllKT;
- array[num].KT1 = KT1; // Заносим балы за КТ и Итог в структуру студента
- array[num].KT2 = KT2; //
- array[num].allKT = allKT;//
- }
- void Auto(Student* array, int num) // Будет автомат или нет
- {
- if (array[num].allKT > 50)
- {
- array[num].Auto = true;
- }
- }
- bool isMarsOk(int* marks, int size) // Функция для проверки введенной оценки
- {
- for (int i{ 0 }; i < size; ++i)
- if (marks[i] < 0 || marks[i] > Constants::maxMark) // Если оценка меньше 0 или больше 5, то
- return false;
- return true;
- }
- /////////////////////////////////////////////////////////// Funcs.h
- #ifndef FUNCS_H
- #define FUNCS_H
- #include <string>
- #include <vector>
- namespace Constants
- {
- inline constexpr int numStud{3}; // Число студентов в группе
- inline constexpr int scoreRate1{4}; // Число оценок в 1-ой КТ
- inline constexpr int scoreRate2{4}; // Число оценок во 2-ой КТ
- inline constexpr int maxMark{5}; // Макс оценка за работу
- inline constexpr int maxMarkKT{100}; // Макс оценка за КТ
- inline constexpr int maxMarkAllKT{100}; // Макс оценка за Итог
- };
- struct Student
- {
- std::string fio; // Фио студента
- int id; // Номер студента
- int score[Constants::scoreRate1 + Constants::scoreRate2]; // Оценки студента
- int KT1; // Ну тут и так все ясно
- int KT2; // Ну тут и так все ясно
- int allKT; // Ну тут тоже вроде все ясно
- bool Auto = false; // Мечта любого студента
- };
- void getGroup(Student* array);
- void getScoreRate(Student* array, int num);
- bool isMarsOk(int* marks, int size);
- void calcKT(Student* array, int num);
- void Auto(Student* array, int num);
- #endif
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement