Advertisement
Guest User

Untitled

a guest
Dec 13th, 2019
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 7.77 KB | None | 0 0
  1. #include <iostream>
  2. #include <stdio.h>
  3. #include <clocale>
  4. #include <windows.h>
  5.  
  6.  
  7.  
  8. struct adress
  9. {
  10.     char gorod[20];
  11.     char ulica[20];
  12.  
  13. };
  14. class   abitura
  15. {
  16. public:
  17.     char surname[20];
  18.     char name[20];
  19.     char father_name[20];
  20.     struct adress ad;
  21.     int ocenki[3];
  22.     double average;
  23. };
  24.  
  25. int menu();
  26. int size = 0, i, j, q;
  27.  
  28.  abitura empty  ;
  29. void vvod(abitura*& ABI);
  30. void see(abitura*& ABI);
  31. void del(abitura*& ABI);
  32. void change(abitura*& ABI);
  33. void find(abitura*& ABI);
  34. void sred(abitura*& ABI);
  35. void sort(abitura* ABI, int razmier,  int x);
  36.  
  37.  
  38. int main()
  39. {
  40.     SetConsoleCP(1251);
  41.     SetConsoleOutputCP(1251);
  42.    
  43.     setlocale(LC_CTYPE, "rus");
  44.     abitura* ABI = NULL;
  45.  
  46.  
  47.     while (1)
  48.     {
  49.  
  50.         switch (menu())
  51.         {
  52.         case 1: see(ABI); break;
  53.         case 2: vvod(ABI); break;
  54.         case 3: del(ABI); break;
  55.         case 4: change(ABI); break;
  56.         case 5: find(ABI); break;
  57.         case 6: sred(ABI); break;
  58.         case 7:return 0;
  59.         }
  60.     }
  61.  
  62.     return 0;
  63. }
  64. int menu()
  65. {
  66.    
  67.     system("cls");
  68.     int choice;
  69.  
  70.     printf("Выберите, что ходите делать? \n 1.Просмотреть список \n 2.Ввести абитуриента\n 3.Удалить \n 4.Изменить\n 5.Найти \n 6.Средний балл\n 7.Выйти\n \n ");
  71.     scanf_s("%d", &choice);
  72.     return choice;
  73. }
  74.  
  75.  
  76. void vvod(abitura*& ABI)
  77. {
  78.     system("cls");
  79.  
  80.     if (size == 0)
  81.     {
  82.         ABI = new abitura[size + 1];
  83.         size++;
  84.     }
  85.     else
  86.     {
  87.         abitura* tmp = new abitura[size + 1];
  88.         for (int i = 0; i < size; i++)
  89.             tmp[i] = ABI[i];
  90.         delete[]ABI;
  91.         ABI = new abitura[size + 1];
  92.         for (int i = 0; i < size + 1; i++)
  93.             ABI[i] = tmp[i];
  94.         size++;
  95.         delete[]tmp;
  96.     }
  97.     gets_s(ABI[size - 1].surname);
  98.  
  99.     printf("Введите фамилию: \n ");
  100.     gets_s(ABI[size - 1].surname);
  101.     printf("Введите имя:  \n");
  102.     gets_s(ABI[size - 1].name);
  103.     printf("Введите отчество: \n");
  104.     gets_s(ABI[size - 1].father_name);
  105.     printf("Введите адрес : \n");
  106.     printf("-город: \n");
  107.     gets_s(ABI[size - 1].ad.gorod);
  108.     printf("-улицу:  \n");
  109.     gets_s(ABI[size - 1].ad.ulica);
  110.     for (int j = 0; j < 3; j++)
  111.     {
  112.         printf("Введите  %d-ую оценку  \n", j + 1);
  113.         scanf_s("%d", &ABI[size - 1].ocenki[j]);
  114.     }
  115.     ABI[size - 1].average = 0;
  116.     printf("\n");
  117.  
  118.     system("pause");
  119. }
  120. void see(abitura*& ABI)
  121. {
  122.     system("cls");
  123.     int r;
  124.  
  125.     printf("\n");
  126.     if (size == 0)
  127.     {
  128.         printf("В списке еще никого нет\n\n\n");
  129.     }
  130.     else
  131.     {
  132.  
  133.         printf(" Введите номер абитуриента\n\n 0 - если нужно показать всех \n ");
  134.         scanf_s("%d", &r);
  135.         system("cls");
  136.         if (r == 0)
  137.             for (int i = 0; i < size; i++)
  138.             {
  139.                 printf("%d. %s", i+1, ABI[i].surname);
  140.                 printf("\t");
  141.                 printf("%s", ABI[i].name);
  142.                 printf("\t");
  143.                 printf("%s", ABI[i].father_name);
  144.                 printf("\t");
  145.                 printf("%s", ABI[i].ad.gorod);
  146.                 printf("\t");
  147.                 printf("%s", ABI[i].ad.ulica);
  148.                 printf("\t");
  149.                 printf("\n");
  150.                 for (int j = 0; j < 3; j++)
  151.                 {
  152.  
  153.                     printf("Оценка №%d = %d", j + 1, ABI[i].ocenki[j]);
  154.  
  155.                     printf("\t");
  156.                 }
  157.                 printf("\n");
  158.                 printf("Средний балл абитуриента : % f", ABI[i].average);
  159.                 printf("\t");
  160.                 printf("\n");
  161.             }
  162.         else
  163.         {
  164.  
  165.             printf("%d. %s",r, ABI[r - 1].surname);
  166.             printf("\t");
  167.             printf("%s", ABI[r - 1].name);
  168.             printf("\t");
  169.             printf("%s", ABI[r - 1].father_name);
  170.             printf("\t");
  171.             printf("%s", ABI[r - 1].ad.gorod);
  172.             printf("\t");
  173.             printf("%s", ABI[r - 1].ad.ulica);
  174.             printf("\t");
  175.             printf("\n");
  176.             for (int j = 0; j < 3; j++)
  177.             {
  178.  
  179.                 printf("Оценка №%d = %d", j + 1, ABI[r - 1].ocenki[j]);
  180.                 printf("\t");
  181.             }
  182.             printf("\n");
  183.             printf("Средний балл абитуриента : %f", ABI[r - 1].average);
  184.             printf("\t");
  185.             printf("\n");
  186.  
  187.         }
  188.  
  189.         printf("\n");
  190.     }
  191.     system("pause");
  192. }
  193.  
  194. void del(abitura*& ABI)
  195. {
  196.     system("cls");
  197.     int r;
  198.     printf(" Введите номер абитуриента, которого нужно удалить\n ");
  199.     printf(" 0 - если нужно удалить весь список :  ");
  200.     scanf_s("%d", &r);
  201.    
  202.     if (r != 0)
  203.     {
  204.         if (r < size) {
  205.  
  206.            
  207.             for (int i = r - 1; i < size; i++)
  208.                 ABI[i] = ABI[i + 1];
  209.             size = size - 1;
  210.         }
  211.         else if (r == size) {
  212.             ABI[r - 1] = empty;
  213.             size--;
  214.         }
  215.     }
  216.     else
  217.         printf("Такого абитуриента нет");
  218.     system("pause");
  219. }
  220. void change(abitura*& ABI)
  221. {
  222.     system("cls");
  223.     int r, p;
  224.     printf(" Введите номер абитуриента у которого вы хотите что-то изменить :  ");
  225.     scanf_s("%d", &r);
  226.     do {
  227.     system("cls");
  228.  
  229.         printf(" Что именно вы хотите изменить? \n 1.Фамилию\n 2.Имя\n 3.Отчество\n 4.Город\n 5.Улицу\n 6.Оценки \n 7.Выход\n ");
  230.         scanf_s("%d", &p);
  231.         switch (p)
  232.         {
  233.         case 1: printf("Введите изменение: "); gets_s(ABI[r - 1].surname); gets_s(ABI[r - 1].surname); break;
  234.         case 2:  printf("Введите изменение: "); gets_s(ABI[r - 1].name); gets_s(ABI[r - 1].name); break;
  235.         case 3:  printf("Введите изменение: "); gets_s(ABI[r - 1].father_name); gets_s(ABI[r - 1].father_name); break;
  236.         case 4:  printf("Введите изменение: "); gets_s(ABI[r - 1].ad.gorod); gets_s(ABI[r - 1].ad.gorod); break;
  237.         case 5: printf("Введите изменение: "); gets_s(ABI[r - 1].ad.ulica); gets_s(ABI[r - 1].ad.ulica); break;
  238.         case 6: printf("Введите изменение: "); for (int j = 0; j < 3; j++) { scanf_s("%d", &ABI[r - 1].ocenki[j]); }; break;
  239.  
  240.         case 7:return;
  241.         }
  242.     } while (1);
  243.  
  244.  
  245. }
  246. void find(abitura*& ABI)
  247. {
  248.     system("cls");
  249.     int r;
  250.     printf("Введите номер абитуриента, которого вы хотите найти: ");
  251.         scanf_s("%d", &r);
  252.  
  253.         printf("%d. %s", r, ABI[r - 1].surname);
  254.         printf("\t");
  255.         printf("%s", ABI[r - 1].name);
  256.         printf("\t");
  257.         printf("%s", ABI[r - 1].father_name);
  258.         printf("\t");
  259.         printf("%s", ABI[r - 1].ad.gorod);
  260.         printf("\t");
  261.         printf("%s", ABI[r - 1].ad.ulica);
  262.         printf("\t");
  263.         printf("\n");
  264.         for (int j = 0; j < 3; j++)
  265.         {
  266.  
  267.             printf("Оценка №%d = %d", j + 1, ABI[r - 1].ocenki[j]);
  268.             printf("\t");
  269.         }
  270.         printf("\n");
  271.         printf("Средний балл абитуриента : %f", ABI[r - 1].average);
  272.         printf("\t");
  273.         printf("\n");
  274.         printf("\n");
  275.  
  276.         system("pause");
  277. }
  278. void sred(abitura*& ABI)
  279. {
  280.  
  281.     int vybor;
  282.     printf("3- Если хотите увидеть средний балл всех\n 0 - если хотите увидеть средний балл только минских абитуриентов : \n");
  283.     scanf_s("%d",&vybor);
  284.     if (vybor == 3) {
  285.  
  286.     for (int i = 0; i < size; i++)
  287.     {
  288.     int sum = 0;
  289.         for (int j = 0; j < 3; j++)
  290.             sum += ABI[i].ocenki[j];
  291.         ABI[i].average = (double(sum) / 3);
  292.     }
  293.     sort(ABI, size-1,  0);
  294.     for (int i = 0; i < size; i++)
  295.     {
  296.  
  297.     printf("Средний балл %d-ого абитуриента : % f",i+1, ABI[i].average);
  298.     printf("\n");
  299.     printf("\t");
  300.     }
  301.     }
  302.     system("pause");
  303.     for (int i = 0; i < size; i++)
  304.     if (ABI[i].ad.gorod == "Минск")
  305.     {
  306.         printf("\t");
  307.         printf("%d.%s",i+1,ABI[i].surname);
  308.         printf("\t");
  309.         printf("%s",ABI[i].name);
  310.         printf("\n");
  311.         printf("Средний балл: %f",ABI[i].average);
  312.         printf("\n");
  313.         printf("\n");
  314.     }
  315.    
  316. }
  317. void sort(abitura*ABI, int razmier , int x)
  318. {
  319.  
  320.     int l = x, r = razmier, d = (l + r) / 2;
  321.     while (l <= r)
  322.     {
  323.         while (ABI[l].average > ABI[d].average)
  324.             l++;
  325.         while (ABI[r].average < ABI[d].average)
  326.             r--;
  327.  
  328.         if (l <= r)
  329.         {
  330.             empty = ABI[l];
  331.             ABI[l] = ABI[r];
  332.             ABI[r] = empty;
  333.         }
  334.         if (r > x)
  335.             sort(ABI, r, x);
  336.  
  337.         if (l < size)
  338.             sort(ABI, razmier, l);
  339.     }
  340.     printf("OK");
  341. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement