Advertisement
evcamels

lr

Jun 16th, 2021
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.76 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3. #include <fstream>
  4. #include <locale.h>
  5. #include <wchar.h>
  6. #include <vector>
  7. #include <string.h>
  8. const int N = 5; //Объявляем константу, которая хранит количество оценок.
  9.  
  10. using namespace std;
  11.  
  12. bool Debt(int subject[]) { //Данная функция возвращает true, если две из трех оценок - двойки.
  13.     int counter = 0;
  14.     for (int i = 0; i < N; i++) {
  15.         if (subject[i] == 2)
  16.             counter++;
  17.     }
  18.     if (counter == 2)
  19.         return true;
  20.     return false;
  21. }
  22.  
  23. int main()
  24. {
  25.     struct Student //Создаем структуру.
  26.     {
  27.         char name[20]; //Поле структуры, которое хранит фамилию.
  28.         char facul[10];//факультет
  29.         int grNum; //Поле структуры, которое хранит номер группы.
  30.         int course;//курс
  31.         char fm[10];//пол
  32.         char city[10];//город
  33.         int mark[5]; //Поле структуры (массив из 5 элементов), которое хранит оценки.
  34.         char name_dolg[20];
  35.     };
  36.     //Массив структур (на 100 элементов максимум). Хранит вводимые данные по каждому студенту.
  37.     Student data[100];
  38.     setlocale( LC_ALL, "Rus");
  39.     char cur[20];
  40.     ifstream fin("input.txt");
  41.     ofstream fout("output.txt");
  42.     int k;
  43.     string str;
  44.     k = 0;
  45.     while (fin >> data[k].name //Считываем k-ую строку файла (то есть, информацию по каждому студенту).
  46.            >> data[k].fm
  47.            >> data[k].facul
  48.            >> data[k].course
  49.            >> data[k].grNum
  50.            >> data[k].city
  51.                >> data[k].mark[0]
  52.                >> data[k].mark[1]
  53.                >> data[k].mark[2]
  54.                >> data[k].mark[3]
  55.                >> data[k].mark[4])
  56.     {
  57.         k++; //Увеличиваем счетчик на единицу, то есть переходим в файле к новому студенту.
  58.     }
  59.     int coun = 0;
  60.     for (int i = 0; i < k; i++) //Пробегаем в цикле по нашим записям (по файлу с информацией по каждому студенту).
  61.     {
  62.         if (Debt(data[i].mark)) //Если есть ровно две двойки, выводим фамилию студента
  63.         {
  64.             strcpy(data[i].name_dolg, data[i].name);
  65.             coun++;
  66.         }
  67.     }
  68.     for(int i=0;i<coun-1;i++){
  69.         for(int j=i+1;j<coun;j++){
  70.             if(strcmp(data[i].name_dolg,data[j].name_dolg)>0)
  71.             {   strcpy(cur,data[i].name_dolg);
  72.                 strcpy(data[i].name_dolg,data[j].name_dolg);
  73.                 strcpy(data[j].name_dolg,cur);
  74.             }
  75.         }
  76.     }
  77.     for(int i=0;i<coun;i++){
  78.         fout << data[i].name_dolg << " *" << endl;
  79.     }
  80.     fout << endl << endl;
  81.     fout << "Общий список студентов: " << endl << endl;
  82.     for(int i=0;i<k;i++){
  83.         fout << "Имя: " << data[i].name << endl;
  84.         fout << "Пол: " << data[i].fm << endl;
  85.         fout << "Факультет: " << data[i].facul << endl;
  86.         fout << "Курс: " << data[i].course << endl;
  87.         fout << "Группа: " << data[i].grNum << endl;
  88.         fout << "Город: " << data[i].city << endl;
  89.         fout << "Оценки: ";
  90.         for(int j=0;j<5;j++){
  91.             fout << data[i].mark[j] << " ; ";
  92.         }
  93.         fout << endl << endl;
  94.     }
  95.     fin.close(); //Закрываем входной файл
  96.     fout.close(); //Закрываем выходной файл
  97.     return 0;
  98. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement