Advertisement
helos3

Untitled

Dec 20th, 2014
172
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.96 KB | None | 0 0
  1. //---------------------------------------------------------------------------
  2.  
  3. #define _CRT_SECURE_NO_WARNINGS
  4.  
  5. #include <vcl.h>
  6. #include <iostream.h>
  7. #include <windows.h>
  8. #include <stdio.h>
  9. #include <stdlib.h>
  10. #include <string>
  11.  
  12. #include <tchar.h>
  13. //---------------------------------------------------------------------------
  14.  
  15. #pragma argsused
  16.  
  17. using namespace std;
  18.  
  19.  
  20. int _tmain(int argc, _TCHAR* argv[])
  21. {
  22.     class Students {
  23.         public: AnsiString name,        //имя студента
  24.             surname,                    //фамилия студента
  25.             *subjects;                  //динамический массив, содержащий в себе названия предметов
  26.         public: int subjCount,          //количество предметов
  27.             *mark;                      //динамический массив, содержащий в себе оценки по предметам
  28.         public: bool excellent;         //флаг, определяющий, отличником ли является студент
  29.  
  30. //объявление динамических массивов
  31.         public: subjCreate (int subjCount) {
  32.             subjects = new AnsiString[subjCount];
  33.             mark = new int[subjCount];
  34.             excellent=true;
  35.         }
  36.     };
  37.  
  38.     SetConsoleCP(1251);
  39.     SetConsoleOutputCP(1251);
  40.  
  41. //все переменные
  42.     char *nameC, *surnameC, *subjectNameC;
  43.     nameC = new char[20];           //считываемое имя студента
  44.     surnameC = new char[20];        //считываемая фамилия студента
  45.     subjectNameC = new char[20];    //считываемое название предмета
  46.     int n,          //количество студентов
  47.         mark,       //считываемая оценка
  48.         bmCount=0//счётчик плохих оценок
  49.         gmCount=0//счётчик хороших оценок
  50.         subjCount;  //количество предметов
  51.     float  allProgress=0,       //средний балл
  52.         bmPercent,              //процент плохих оценок
  53.         gmPercent;              //процент хороших оценок
  54.     bool excExist=false;        //переменная, определяющая наличие отличников
  55.  
  56. //ввод количества учеников и количества предметов данных
  57.     fflush(stdin);
  58.     printf("Введите количество студентов в группе: ");
  59.     cin >> n;
  60.     printf("Введите количество предметов: ");
  61.     cin >> subjCount;
  62.  
  63. //создание объекта, состоящего из массива классов Students
  64.     Students *stGroup = new Students[n];
  65.     for (int i = 0; i < n; i++) {
  66.         stGroup[i].subjCreate(subjCount);
  67.     }
  68.  
  69. // ввод имен дисциплин
  70.     for (int j = 0; j < subjCount; j++) {
  71.         fflush(stdin);
  72.         printf("Введите название дисциплины №%d: ", j+1);
  73.         cin >> subjectNameC;
  74.         for (int i = 0; i < n; i++) {
  75.             stGroup[i].subjects[j]=subjectNameC;
  76.         }
  77.     }
  78.  
  79. //заполнение данных о студентах
  80.     for (int i = 0; i < n; i++) {
  81. //ввод имени и фамилии
  82.         fflush(stdin);
  83.         printf("\nЗаполнение данных о студенте № %d\nВведите имя: ",i+1);
  84.         cin >> nameC;
  85.         printf("Введите фамилию: ");
  86.         cin >> surnameC;
  87.         stGroup[i].name=nameC;
  88.         stGroup[i].surname=surnameC;
  89.  
  90.  
  91. //ввод оценок
  92.         for (int j = 0; j < subjCount; j++) {
  93.         printf("\nВвод оценок. Допустимые значения - от 0 до 100");
  94.             while(1){
  95.                 fflush(stdin);
  96.                 printf("\nВведите оценку по дисциплине %s: ",  stGroup[i].subjects[j].c_str());
  97. //проверка, является ли вводимый символ цифрой
  98.                 if (!isdigit(getch())) {
  99.                     printf("\nВы можете вводить только цифры!");
  100.                     continue;
  101.                 }
  102.                 cin >> mark;
  103.                 if (mark<=100 && mark>=0) {
  104.                     break;
  105.                 }
  106.                 printf("Ошибка, введённая оценка не удовлетворяет требованиям!");
  107.             }
  108.             stGroup[i].mark[j]=mark;
  109. //проверка, является ли студент отличником
  110.             if (stGroup[i].mark[j]<87) {
  111.                 stGroup[i].excellent=false;
  112.             }
  113. //проверка, является ли оценка положительной или отрицательной
  114.             if (stGroup[i].mark[j]<60)
  115.                 bmCount++;
  116.             else gmCount++;
  117. //вычисление общего количества баллов
  118.             allProgress +=stGroup[i].mark[j];
  119.         }
  120.  
  121.  
  122. //проверка, если в группе отличники
  123.         if (stGroup[i].excellent==true) {
  124.             excExist=true;
  125.             break;
  126.         }
  127.     }
  128. //вычисление процента хороших, плохих оценок, вычисление среднего балла
  129.     bmPercent=((float)(bmCount))/((float)(n*subjCount))*100;
  130.     gmPercent=((float)(gmCount))/((float)(n*subjCount))*100;
  131.     allProgress=((float)(allProgress))/((float)(n*subjCount));
  132.  
  133. //вывод среднего балла, количества хороших, плохих оценок, процентного соотн-я
  134. //хороших, плохих оценок к количеству студентов
  135.     printf("\nСредний балл: %.2f\n", allProgress);
  136.     printf("Количество хороших оценок: %d, их процент: %.2f%\n", gmCount, gmPercent);
  137.     printf("Количество плохих оценок: %d, их процент: %.2f%\n", bmCount, bmPercent);
  138.  
  139. //вывод отличников (если имеются)
  140.     if (excExist==true) {
  141.     printf("Отличники:\n");
  142.         for (int i =0; i < n; i++)
  143.             if (stGroup[i].excellent==true)
  144.                 printf("%s %s\n", stGroup[i].name, stGroup[i].surname);
  145.     } else
  146.         printf("Отличников в группе не имеется\n");
  147.  
  148. //освобождение памяти
  149.     delete[] stGroup;
  150.     system("pause");
  151.     return 0;
  152. }
  153. //---------------------------------------------------------------------------
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement