Advertisement
80LK

LR16 AKT

Nov 3rd, 2019
148
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.60 KB | None | 0 0
  1. /* Задание 1 */
  2. struct Point {
  3.     float x, y, z;
  4. };
  5.  
  6. int quest1() {
  7.     struct Point A, B;
  8.  
  9.     setlocale(0, ".1251");
  10.    
  11.     printf("Введите координаты X, Y и Z точки A через пробел соответственно: ");
  12.     scanf_s("%f %f %f", &A.x, &A.y, &A.z);
  13.  
  14.     printf("Введите координаты X, Y и Z точки B через пробел соответственно: ");
  15.     scanf_s("%f %f %f", &B.x, &B.y, &B.z);
  16.  
  17.     printf("Расстояние между точками: %.2f\n", sqrt(pow(A.x-B.x, 2) + pow(A.y - B.y, 2) + pow(A.z - B.z, 2)));
  18.  
  19.     return 0;
  20. }
  21.  
  22.  
  23. /* Задание 2 */
  24. struct Student {
  25.     char surname[25], name[25], patronymic[25], group[10];
  26.     int marks[5];
  27. };
  28.  
  29. int quest2() {
  30.     const int N = 3;
  31.     struct Student students[N];
  32.     int k;
  33.     char thisGroup[10];
  34.  
  35.     setlocale(0, ".1251");
  36.  
  37.     for (int i = 0; i < N; i++) {
  38.         printf("Данные %d студента:\n", i+1);
  39.        
  40.         printf("Фамилия студента: ");
  41.         scanf_s("%s", students[i].surname, 25);
  42.  
  43.         printf("Имя студента: ");
  44.         scanf_s("%s", students[i].name, 25);
  45.  
  46.         printf("Отчество студента: ");
  47.         scanf_s("%s", students[i].patronymic, 25);
  48.  
  49.         printf("Группа: ");
  50.         scanf_s("%s", students[i].group, 10);
  51.  
  52.         for (int j = 0; j < 5; j++) {
  53.             do {
  54.                 printf("%d оценка: ", j + 1);
  55.                 scanf_s("%d", &students[i].marks[j]);
  56.                 if (students[i].marks[j] > 5 || students[i].marks[j] < 1)
  57.                     puts("Не верные данные, попробуйте еще раз.");
  58.             } while (students[i].marks[j] > 5 || students[i].marks[j] < 1);
  59.         }
  60.     }
  61.  
  62.     /* Список студентов, чей средний балл ВЫШЕ 4.0*/
  63.     puts("\nСписок студентов, чей средний балл выше 4:");
  64.     k = 0;
  65.     for (int i = 0; i < N; i++) {
  66.         float s = 0;
  67.         for (int j = 0; j < 5; j++) {
  68.             s += students[i].marks[j];
  69.         }
  70.         s /= 5;
  71.  
  72.         if (s > 4) {
  73.             k++;
  74.             setlocale(0, ".866");
  75.             printf("%d) %s %s %s - %s ", k, students[i].surname, students[i].name, students[i].patronymic, students[i].group);
  76.             setlocale(0, ".1251");
  77.             printf("Средний балл: %.2f\n", s);
  78.         }
  79.     }
  80.     if (k == 0)
  81.         puts("Таких студентов нет.");
  82.  
  83.     for (int i = 0; i < N - 1; i++) {
  84.         for (int j = 0; j < N - i - 1; j++) {
  85.             // Сравнение групп
  86.             int a = strcmp(students[j].group, students[j + 1].group);
  87.            
  88.             if(a == 0) // Если группы одинаковы, сортируем по фамилии
  89.                 a = strcmp(students[j].surname, students[j+1].surname);
  90.  
  91.             if(a == 0) // Если фамилии одинаковы, сортируем по имени
  92.                 a = strcmp(students[j].name, students[j + 1].name);
  93.  
  94.             if (a == 0) // Если имена одинаковы, сортируем по отчеству
  95.                 a = strcmp(students[j].patronymic, students[j + 1].patronymic);
  96.  
  97.             if (a == 1) {
  98.                 struct Student b = students[j + 1];
  99.                 students[j + 1] = students[j];
  100.                 students[j] = b;
  101.             }
  102.         }
  103.     }
  104.  
  105.     /* Выводим список групп со студентами в алфовитном порядке порядке */
  106.     printf("\nСписок студентов:");
  107.     for (int i = 0; i < N; i++) {
  108.         if (i == 0 || strcmp(students[i].group, thisGroup) != 0) {
  109.             strcpy_s(thisGroup, students[i].group);
  110.             setlocale(0, ".1251");
  111.             printf("\nГруппа ");
  112.             setlocale(0, ".866");
  113.             printf("%s:\n", thisGroup);
  114.             k = 0;
  115.         }
  116.  
  117.         setlocale(0, ".866");
  118.         k++;
  119.         printf("%d) %s %s %s\n", k, students[i].surname, students[i].name, students[i].patronymic);
  120.     }
  121.  
  122.     return 0;
  123. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement