evcamels

lr8

Jun 10th, 2021
141
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.30 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 = 3; //Объявляем константу, которая хранит количество оценок.
  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 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'};
  37.     ifstream fin("input.txt");
  38.     ofstream fout("output.txt");
  39.     int k;
  40.     string str;
  41.     k = 0;
  42.     while (fin >> data[k].name //Считываем k-ую строку файла (то есть, информацию по каждому студенту).
  43.            >> data[k].fm
  44.            >> data[k].facul
  45.            >> data[k].course
  46.            >> data[k].grNum
  47.            >> data[k].city
  48.                >> data[k].mark[0]
  49.                >> data[k].mark[1]
  50.                >> data[k].mark[2]
  51.                >> data[k].mark[3]
  52.                >> data[k].mark[4])
  53.     {
  54.         k++; //Увеличиваем счетчик на единицу, то есть переходим в файле к новому студенту.
  55.     }
  56.    
  57.     for (int i = 0; i < k; i++) //Пробегаем в цикле по нашим записям (по файлу с информацией по каждому студенту).
  58.     {
  59.         if (Debt(data[i].mark)) //Если есть ровно две двойки, выводим фамилию студента
  60.         {
  61.             for( int j=0; j<( sizeof( alfavit )/sizeof( alfavit[0] )); j++ )//сортировка по англ алфавиту
  62.                     for( int i=0; i<( sizeof( data )/sizeof( data[0] )); i++ )
  63.                         if( data[i].name[0] == alfavit[j] ) {
  64.                             fout << data[i].name << " *" << endl;
  65.                         }
  66.         }
  67.     }
  68.     fout << endl << endl;
  69.     fout << "Общий список студентов: " << endl << endl;
  70.     for(int i=0;i<k;i++){
  71.         fout << "Имя: " << data[i].name << endl;
  72.         fout << "Пол: " << data[i].fm << endl;
  73.         fout << "Факультет: " << data[i].facul << endl;
  74.         fout << "Курс: " << data[i].course << endl;
  75.         fout << "Группа: " << data[i].grNum << endl;
  76.         fout << "Город: " << data[i].city << endl;
  77.         fout << "Оценки: ";
  78.         for(int j=0;j<5;j++){
  79.             fout << data[i].mark[j] << " ; ";
  80.         }
  81.         fout << endl << endl;
  82.     }
  83.     fin.close(); //Закрываем входной файл
  84.     fout.close(); //Закрываем выходной файл
  85.     return 0;
  86. }
  87.  
Advertisement
Add Comment
Please, Sign In to add comment