Advertisement
J3st3rs_j0k3

Str1e2 with check

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