Advertisement
SteveStage

HW

Dec 11th, 2022
589
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.11 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <cstring>
  4. #include <deque>
  5. #include <string>
  6. #include <conio.h>
  7.  
  8. class info_container
  9. {
  10.     std::string name;
  11.     int phone = 0;
  12.     bool isValidName = false, isValidPhone = false;
  13. public:
  14.     info_container() {}
  15.     info_container(const int& i) : phone(i), isValidPhone(true) {}
  16.     info_container(const std::string& i) : name(i), isValidName(true) {}
  17.     info_container(const char* i) : name(std::string(i)), isValidName(true) {}
  18.     info_container(const std::string& i1, const int& i2) : name(i1), phone(i2), isValidName(true), isValidPhone(true) {}
  19.     info_container(const char* i1, const int& i2) : name(std::string(i1)), phone(i2), isValidName(true), isValidPhone(true) {}
  20.     const std::string& getName()
  21.     {
  22.         return name;
  23.     }
  24.     void setName(const std::string& i)
  25.     {
  26.         name = i;
  27.         if (!isValidName)
  28.             isValidName = true;
  29.     }
  30.     void setName(const char* i)
  31.     {
  32.         name = std::string(i);
  33.         if (!isValidName)
  34.             isValidName = true;
  35.     }
  36.     const int& getPhoneNumber()
  37.     {
  38.         return phone;
  39.     }
  40.     void setPhoneNumber(const int& i)
  41.     {
  42.         phone = i;
  43.         if (!isValidPhone)
  44.             isValidPhone = true;
  45.     }
  46. };
  47.  
  48. template <typename tp>
  49. class queue
  50. {
  51.     std::deque<tp> dq;
  52.     int size = 0;
  53. public:
  54.     void push(const tp& i)
  55.     {
  56.         dq.push_back(i);
  57.         size++;
  58.     }
  59.     tp pop()
  60.     {
  61.         tp t;
  62.         if (size > 0)
  63.         {
  64.             t = dq.front();
  65.             dq.pop_front();
  66.             size--;
  67.         }
  68.         return t;
  69.     }
  70.     const int& getSize()
  71.     {
  72.         return size;
  73.     }
  74. };
  75.  
  76. int main()
  77. {
  78.     queue<info_container> q;
  79.     char c;
  80.     do
  81.     {
  82.         std::string st;
  83.         int nt;
  84.         std::cout << "Enter name: ";
  85.         std::getline(std::cin >> std::ws, st);
  86.         std::cout << "Enter phone number: ";
  87.         std::cin >> nt;
  88.         q.push(info_container(st, nt));
  89.         std::cin.clear();
  90.         std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
  91.         std::cout << "Wanna continue? (y/n): ";
  92.         std::cin >> c;
  93.     } while (c == 'y');
  94.     std::cout << std::endl;
  95.     while(q.getSize() > 0)
  96.     {
  97.         info_container t = q.pop();
  98.         std::cout << "Name: " << t.getName() << std::endl;
  99.         std::cout << "Phone Number: " << t.getPhoneNumber() << std::endl << std::endl;
  100.     }
  101.     _getch();
  102.     return 0;
  103. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement