Savelyev_Vyacheslav

OOP L8

Aug 9th, 2021 (edited)
650
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.75 KB | None | 0 0
  1. #define _CRT_SECURE_NO_WARNINGS
  2.  
  3. #include <iostream>
  4. #include <iterator>
  5. #include <string.h>
  6. #include <stdlib.h>
  7. #include <deque>
  8. #include <list>
  9. using namespace std;
  10.  
  11. struct house
  12. {
  13.     int Room;
  14.     int Sqr;
  15.     int Level;
  16.     string adress;
  17. };
  18.  
  19. class order
  20. {
  21. public:
  22.     string fio;
  23.     house h1;
  24.     friend ostream& operator <<(ostream& out, const order& n);
  25. };
  26.  
  27.  
  28. ostream& operator <<(ostream& out, const order& ord)
  29. {
  30.     out << "**************************************************************** " << endl;
  31.     out << "ФИО-: " << ord.fio << endl;
  32.     out << "Частный дом: " << endl;
  33.     out << "Количество комнат - " << ord.h1.Room << endl;
  34.     out << "Площадь - " << ord.h1.Sqr << endl;
  35.     out << "Этаж - " << ord.h1.Level << endl;
  36.     out << "Адрес - " << ord.h1.adress << endl;
  37.  
  38.     return out;
  39. }
  40. void Print(list<order>& change_houses) {
  41.     for (auto i = change_houses.begin(); i != change_houses.end(); i++) {
  42.         cout << *i << endl;
  43.     }
  44.    
  45. }
  46. void sortFIO(list<order> &change_houses) {
  47.     order swap;
  48.     auto j = change_houses.begin();
  49.     auto jNext = j;
  50.    
  51.     jNext++;
  52.    
  53.     while (jNext != change_houses.end()) {
  54.  
  55.         if (jNext->fio.at(0) < j->fio.at(0))
  56.         {
  57.             swap = *jNext;
  58.             *jNext = *j;
  59.             *j = swap;
  60.             sortFIO(change_houses);
  61.         }
  62.         jNext++;
  63.         j++;
  64.     }
  65.     //Print(change_houses);
  66.     return;
  67. }
  68. void sortADRESS(list<order>& change_houses) {
  69.     order swap;
  70.     auto j = change_houses.begin();
  71.     auto jNext = j;
  72.  
  73.     jNext++;
  74.  
  75.     while (jNext != change_houses.end()) {
  76.  
  77.         if (jNext->h1.adress.at(0) < j->h1.adress.at(0))
  78.         {
  79.             swap = *jNext;
  80.             *jNext = *j;
  81.             *j = swap;
  82.             sortADRESS(change_houses);
  83.         }
  84.         jNext++;
  85.         j++;
  86.     }
  87.     Print(change_houses);
  88.     return;
  89. }
  90.  
  91. void sortSQR(list<order>& change_houses) {
  92.     order swap;
  93.     auto j = change_houses.begin();
  94.     auto jNext = j;
  95.  
  96.     jNext++;
  97.  
  98.     while (jNext != change_houses.end()) {
  99.  
  100.         if (jNext->h1.Sqr < j->h1.Sqr)
  101.         {
  102.             swap = *jNext;
  103.             *jNext = *j;
  104.             *j = swap;
  105.             sortSQR(change_houses);
  106.         }
  107.         jNext++;
  108.         j++;
  109.     }
  110.     Print(change_houses);
  111.     return;
  112. }
  113. void sortRoom(list<order>& change_houses) {
  114.     order swap;
  115.     auto j = change_houses.begin();
  116.     auto jNext = j;
  117.  
  118.     jNext++;
  119.  
  120.     while (jNext != change_houses.end()) {
  121.  
  122.         if (jNext->h1.Room < j->h1.Room)
  123.         {
  124.             swap = *jNext;
  125.             *jNext = *j;
  126.             *j = swap;
  127.             sortRoom(change_houses);
  128.         }
  129.         jNext++;
  130.         j++;
  131.     }
  132.     Print(change_houses);
  133.     return;
  134. }
  135. void sortLev(list<order>& change_houses) {
  136.     order swap;
  137.     auto j = change_houses.begin();
  138.     auto jNext = j;
  139.  
  140.     jNext++;
  141.  
  142.     while (jNext != change_houses.end()) {
  143.  
  144.         if (jNext->h1.Level < j->h1.Level)
  145.         {
  146.             swap = *jNext;
  147.             *jNext = *j;
  148.             *j = swap;
  149.             sortLev(change_houses);
  150.         }
  151.         jNext++;
  152.         j++;
  153.     }
  154.     Print(change_houses);
  155.     return;
  156. }
  157. void Poisk(list<order>& change_houses) {
  158.     auto j = change_houses.begin();
  159.     cout << "Введите ключевое слово для поиска по ФИО и адрессу из списка: ";
  160.     string nameStr;
  161.     cin >> nameStr;
  162.     cout << "Введите ключую цифру для поиска из списка: ";
  163.     int nameInt;
  164.     cin >> nameInt;
  165.     while (j != change_houses.end()) {
  166.         if (j->fio == nameStr)
  167.         {
  168.             cout << "найден в имени" << endl;
  169.             cout << *j << endl;
  170.         }
  171.         if (j->h1.adress == nameStr)
  172.         {
  173.             cout << "найден в адресах" << endl;
  174.             cout << *j << endl;
  175.         }
  176.         if (j->h1.Level == nameInt)
  177.         {
  178.             cout << "найден в этажах" << endl;
  179.             cout << *j << endl;
  180.         }
  181.         if (j->h1.Room == nameInt)
  182.         {
  183.             cout << "найден в комнотах" << endl;
  184.             cout << *j << endl;
  185.         }
  186.         if (j->h1.Sqr == nameInt)
  187.         {
  188.             cout << "найден в площади" << endl;
  189.             cout << *j << endl;
  190.         }
  191.  
  192.         j++;
  193.     }
  194. }
  195.  
  196. int main()
  197. {
  198.    
  199.     setlocale(LC_ALL, "Russian");
  200.     list<order> change_houses;
  201.     int i;
  202.     while (1)
  203.     {
  204.         cout << "Введите цифру:" << endl;
  205.         cout << "1 - Ввод записи" << endl;
  206.         cout << "2 - Поиск по ключу" << endl;
  207.         cout << "3 - Вывод всех записей" << endl;
  208.         cout << "4 - удаление по ФИО" << endl;
  209.         cout << "5 - Сортировка по имени и по адресу" << endl;
  210.         cout << "6 - Сортировка по параметрам" << endl;
  211.         cin >> i;
  212.         switch (i)
  213.         {
  214.             case 1:
  215.             {
  216.                 order ord;
  217.                 cout << "Введите ФИО - ";
  218.                 cin >> ord.fio;
  219.                 cout << "Характеристика дома:" << endl;
  220.                 cout << "Количество комнат - ";
  221.                 cin >> ord.h1.Room;
  222.                 cout << "Площадь - ";
  223.                 cin >> ord.h1.Sqr;
  224.                 cout << "Этаж - ";
  225.                 cin >> ord.h1.Level;
  226.                 cout << "Адрес - ";
  227.                 cin >> ord.h1.adress;
  228.  
  229.                 change_houses.push_back(ord);
  230.                 break;
  231.             }
  232.             case 2:
  233.             {
  234.                 Poisk(change_houses);
  235.                 break;
  236.             }
  237.             case 3:
  238.             {
  239.                 Print(change_houses);
  240.                 break;
  241.             }
  242.             case 4: {
  243.                 auto j = change_houses.begin();
  244.                 cout << "Введите ФИО для удаления из списка: ";
  245.                 string nameDel;
  246.                 while (j != change_houses.end()) {
  247.                     if (j->fio == nameDel)
  248.                     {
  249.                         cout <<"удеалён "<< endl;
  250.                        
  251.                         change_houses.erase(j);
  252.                         break;
  253.                     }
  254.                     j++;
  255.                 }
  256.                 break;
  257.             }
  258.             case 5: {
  259.                 cout << " Сортировка по ФИО" << endl;
  260.                 sortFIO(change_houses);
  261.                 Print(change_houses);
  262.                 cout << " Сортировка по Адрессу" << endl;
  263.                 sortADRESS(change_houses);
  264.  
  265.                 break;
  266.             }
  267.             case 6: {
  268.                 cout << " Сортировка по площади" << endl;
  269.                 sortSQR(change_houses);
  270.                 cout << " Сортировка по комнотам" << endl;
  271.                 sortRoom(change_houses);
  272.                 cout << " Сортировка по этажу" << endl;
  273.                 sortLev(change_houses);
  274.                 break;
  275.             }
  276.         }
  277.     }
  278.  
  279. }
Add Comment
Please, Sign In to add comment