Advertisement
Guest User

Untitled

a guest
May 27th, 2017
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.94 KB | None | 0 0
  1. #define _CRT_SECURE_NO_WARNINGS
  2. #include <iostream>
  3.  
  4. struct Student
  5. {
  6.     char firstName[20];
  7.     char middleName[20];
  8.     char lastName[20];
  9.     char sex;
  10.     char faculty[20];
  11.     int group;
  12.     char address[20];
  13.     int course;
  14.     int marks[5];
  15.     bool isFrequentGroup;
  16. };
  17.  
  18. // 1 5 1 5 4 7 89 1 4 1 2
  19. char* getMostFrequentLastName(Student* students, int size)
  20. {
  21.     int tmpCount;
  22.     int maxCount = 0;
  23.     char* lastName = "";
  24.  
  25.     for (int i = 0; i < size; i++)
  26.     {
  27.         tmpCount = 0;
  28.         for (int j = i + 1; j < size; j++)
  29.         {
  30.             if (strcmp(students[i].lastName, students[j].lastName) == 0 &&
  31.                 students[i].sex == 'М' && strcmp(students[i].faculty, "ИВТ") == 0)
  32.             {
  33.                 tmpCount++;
  34.             }
  35.         }
  36.         if (tmpCount > maxCount)
  37.         {
  38.             maxCount = tmpCount;
  39.             lastName = students[i].lastName;
  40.         }
  41.     }
  42.  
  43.     return lastName;
  44. }
  45.  
  46. void Sort(Student* students, int size, char* frequentLastName)
  47. {
  48.     Student tmpStudent;
  49.  
  50.     for (int i = 0; i < size; i++)
  51.     {
  52.         if (strcmp(students[i].lastName, frequentLastName) == 0)
  53.         {
  54.             students[i].isFrequentGroup = true;
  55.         }
  56.     }
  57.  
  58.     for (int i = 0; i < size - 1; i++)
  59.     {
  60.         for (int j = 0; j < size - i - 1; j++)
  61.         {
  62.             if ((students[j].isFrequentGroup > students[j + 1].isFrequentGroup) ||
  63.                 students[j].group < students[j + 1].group)
  64.             {
  65.                 tmpStudent = students[j];
  66.                 students[j] = students[j + 1];
  67.                 students[j + 1] = tmpStudent;
  68.             }
  69.         }
  70.     }
  71. }
  72.  
  73. void PrintStudents(Student* students, int size, char* f = "")
  74. {
  75.     for (int i = 0; i < size; i++)
  76.     {
  77.         if (strcmp(students[i].faculty, "ИВТ") == 0)
  78.         {
  79.             printf("%s%s %s %s %c %i %s %s %i [%i %i %i %i %i]\n",
  80.                 strcmp(students[i].lastName, f) == 0 ? "***" : "",
  81.                 students[i].lastName, students[i].firstName, students[i].middleName,
  82.                 students[i].sex, students[i].group, students[i].faculty,
  83.                 students[i].address, students[i].course, students[i].marks[0],
  84.                 students[i].marks[1], students[i].marks[2], students[i].marks[3],
  85.                 students[i].marks[4]);
  86.         }
  87.     }
  88.     printf("\n");
  89. }
  90.  
  91. void main()
  92. {
  93.     setlocale(0, "RU");
  94.     const int size = 10;
  95.     Student students[size];
  96.     FILE* file;
  97.     Student tmp;
  98.     int count = 0;
  99.     file = fopen("students.txt", "r");
  100.     for (int i = 0; i < size; i++)
  101.     {
  102.         fscanf(file, "%s\n", &tmp.lastName);
  103.         fscanf(file, "%s\n", &tmp.firstName);
  104.         fscanf(file, "%s\n", &tmp.middleName);
  105.         fscanf(file, "%c\n", &tmp.sex);
  106.         fscanf(file, "%s\n", &tmp.faculty);
  107.         fscanf(file, "%i\n", &tmp.group);
  108.         fscanf(file, "%s\n", &tmp.address);
  109.         fscanf(file, "%i\n", &tmp.course);
  110.         fscanf(file, "%i %i %i %i %i\n", &tmp.marks[0],
  111.             &tmp.marks[1], &tmp.marks[2], &tmp.marks[3], &tmp.marks[4]);
  112.         fscanf(file, "\n");
  113.         students[i] = tmp;
  114.     }
  115.     char* frequentLastName = getMostFrequentLastName(students, size);
  116.     PrintStudents(students, size);
  117.     printf("Самая распространённая фамилия: %s\n", frequentLastName);
  118.     Sort(students, size, frequentLastName);
  119.     PrintStudents(students, size, frequentLastName);
  120.  
  121.     system("PAUSE");
  122. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement