Advertisement
SteveStage

HW2

Dec 12th, 2022
500
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.98 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstring>
  3. #include <string>
  4. #include <conio.h>
  5.  
  6. class info_container
  7. {
  8.     std::string name;
  9.     int phone = 0;
  10.     bool isValidName = false, isValidPhone = false;
  11. public:
  12.     info_container() {}
  13.     info_container(const int& i) : phone(i), isValidPhone(true) {}
  14.     info_container(const std::string& i) : name(i), isValidName(true) {}
  15.     info_container(const char* i) : name(std::string(i)), isValidName(true) {}
  16.     info_container(const std::string& i1, const int& i2) : name(i1), phone(i2), isValidName(true), isValidPhone(true) {}
  17.     info_container(const char* i1, const int& i2) : name(std::string(i1)), phone(i2), isValidName(true), isValidPhone(true) {}
  18.     const std::string& getName()
  19.     {
  20.         return name;
  21.     }
  22.     void setName(const std::string& i)
  23.     {
  24.         name = i;
  25.         if (!isValidName)
  26.             isValidName = true;
  27.     }
  28.     void setName(const char* i)
  29.     {
  30.         name = std::string(i);
  31.         if (!isValidName)
  32.             isValidName = true;
  33.     }
  34.     const int& getPhoneNumber()
  35.     {
  36.         return phone;
  37.     }
  38.     void setPhoneNumber(const int& i)
  39.     {
  40.         phone = i;
  41.         if (!isValidPhone)
  42.             isValidPhone = true;
  43.     }
  44. };
  45.  
  46. class queue;
  47.  
  48. class queue_mngr
  49. {
  50.     queue* first_element;
  51. public:
  52.     queue* getFirst()
  53.     {
  54.         return this->first_element;
  55.     }
  56.     void setFirst(queue* f)
  57.     {
  58.         this->first_element = f;
  59.     }
  60. };
  61.  
  62. class queue
  63. {
  64.     queue_mngr* first_element = nullptr;
  65.     queue* next_element = nullptr;
  66.     info_container data;
  67. public:
  68.     queue()
  69.     {
  70.         first_element = new queue_mngr();
  71.         first_element->setFirst(this);
  72.     }
  73.     queue(const info_container& d, queue_mngr* fe) : data(d), first_element(fe) {}
  74.     queue* getNext()
  75.     {
  76.         return this->next_element;
  77.     }
  78.     ~queue()
  79.     {
  80.     }
  81.     void setNext(queue* n)
  82.     {
  83.         this->next_element = n;
  84.     }
  85.     const info_container& getData()
  86.     {
  87.         return data;
  88.     }
  89.     void push(const info_container& d)
  90.     {
  91.         queue* new_element = new queue(d, this->first_element);
  92.         queue* last_element = this->first_element->getFirst();
  93.         while (last_element->getNext())
  94.         {
  95.             last_element = last_element->getNext();
  96.         }
  97.         last_element->setNext(new_element);
  98.     }
  99.     bool pop(info_container& d)
  100.     {
  101.         if (!this->first_element->getFirst()->getNext())
  102.             return false;
  103.         queue* pop_element = this->first_element->getFirst()->getNext();
  104.         d = pop_element->getData();
  105.         this->first_element->getFirst()->setNext(pop_element->getNext());
  106.         delete pop_element;
  107.         return true;
  108.     }
  109. };
  110.  
  111. int main()
  112. {
  113.     std::string ak[5] = {"first", "second", "third", "fourth", "fifth"};
  114.     queue q;
  115.     std::string is;
  116.     int in;
  117.     for (int i = 0; i < 5; i++)
  118.     {
  119.         std::cout << "Enter " << ak[i] << " name: ";
  120.         std::getline(std::cin >> std::ws, is);
  121.         std::cout << "Enter " << ak[i] << " phone number: ";
  122.         std::cin >> in;
  123.         std::cout << std::endl;
  124.         q.push(info_container(is, in));
  125.     }
  126.     std::cout << std::endl;
  127.     info_container tp;
  128.     while (q.pop(tp))
  129.     {
  130.         std::cout << "Name: " << tp.getName() << std::endl;
  131.         std::cout << "Phone number: " << tp.getPhoneNumber() << std::endl;
  132.         std::cout << std::endl;
  133.     }
  134.     _getch();
  135.     return 0;
  136. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement