Advertisement
J3st3rs_j0k3

str1_e2

Jun 15th, 2022
889
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.36 KB | None | 0 0
  1. /*
  2. Структура данных - стек.
  3. Напишите программу для моделирования Т-образного сортировочного узла на железной дороге,
  4. позволяющего разделять на два направления состав, состоящий из вагонов двух типов (на каждое направление
  5. формируется состав из вагонов одного типа
  6. */
  7.  
  8.  
  9. #include <iostream>
  10. #include <string.h>
  11. #include <cstdlib>
  12.  
  13. using namespace std;
  14.  
  15. class Stack
  16. {
  17.  private:
  18.     struct Element
  19.     {
  20.         int type;
  21.         string number;
  22.         struct Element *next;
  23.     } * pstack;
  24.  public:
  25.     Stack ()//конструктор
  26.     {
  27.         pstack = NULL;
  28.     }
  29.     ~Stack ()//деструктор
  30.     {
  31.         Element * temp;
  32.         while (pstack)
  33.         {
  34.               temp = pstack;
  35.               pstack = pstack->next;
  36.               delete temp;
  37.         }
  38.     }
  39.     int Empty()//проверка на наполненость стека
  40.     {
  41.         return pstack == NULL;
  42.     }
  43.     int TopT()//влзврат типа последнего элемента
  44.     {
  45.         return pstack->type;
  46.     }
  47.     string TopN()//возврат номера последнего вагона
  48.     {
  49.         return pstack->number;
  50.     }
  51.     void Pop()//разрушающее чтение
  52.     {
  53.         Element *del = pstack;
  54.         pstack = pstack->next;
  55.         delete del;
  56.     }
  57.     void Push (int x,string y) //добавить элемент в стек
  58.     {
  59.         Element *ins = new Element;
  60.         ins->type=x;
  61.         ins->number=y;
  62.         ins->next = pstack;
  63.         pstack = ins;
  64.     }
  65.  
  66. };
  67.  
  68. int proverka()
  69. {
  70.     int x;
  71.     do
  72.     {
  73.         cout<<"Enter train type(0 or 1) ";
  74.         cin>>x;
  75.     }while((x<0)||(x>1));
  76.     return x;
  77. }
  78.  
  79. int main()
  80. {
  81.     int menu,temptype;
  82.     string tempnumb;
  83.     Stack trainlist;
  84.     do
  85.     {
  86.         system("cls");
  87.         cout<<"1)Make train 2) Watch last train 3)Send trains 4)Exit"<<endl;
  88.         cin>>menu;
  89.         switch(menu)
  90.         {
  91.         case 1:
  92.             {
  93.                 temptype=proverka();
  94.                 cout<<"Enter train number ";
  95.                 cin>>tempnumb;
  96.                 trainlist.Push(temptype,tempnumb);
  97.                 cout<<"train was added in stack"<<endl;
  98.                 system("pause");
  99.                 break;
  100.             }
  101.         case 2:
  102.             {
  103.                 if(!trainlist.Empty())
  104.                 {
  105.                     cout<<trainlist.TopT()<<" "<<trainlist.TopN()<<endl;
  106.                     system("pause");
  107.                 }
  108.                 else
  109.                 {
  110.                     cout<<"No trains"<<endl;
  111.                     system("pause");
  112.                 }
  113.                 break;
  114.             }
  115.         case 3:
  116.             {
  117.                 cout<<"1 way\t\t\t2 way"<<endl;
  118.                 while(!(trainlist.Empty()))
  119.                 {
  120.                     if(!(trainlist.TopT()))
  121.                        cout<<trainlist.TopN()<<endl;
  122.                     else
  123.                        cout<<"\t\t\t"<<trainlist.TopN()<<endl;
  124.                     trainlist.Pop();
  125.                 }
  126.                 system("pause");
  127.                 break;
  128.             }
  129.         }
  130.     }while(menu!=4);
  131.     return 0;
  132. }
  133.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement