evcamels

lr8

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