Advertisement
Guest User

Untitled

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