Advertisement
evcamels

lr8

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