Advertisement
Guest User

Untitled

a guest
Jan 26th, 2015
168
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.54 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstdio>
  3. #include <string>
  4.  
  5. using namespace std;
  6.  
  7. struct struktura
  8. {
  9.     // 1 wsp - numer stsou 2 - wartość
  10.     int stos[10][10];
  11.     int kolejka[10][10];
  12.     int wierzcholekStosu[10];
  13.     int wierzcholekKolejki[10];
  14. };
  15.  
  16. struktura dane;
  17.  
  18. void new_s(int i)
  19. {
  20.     //dane.wierzcholekStosu[i] = 0;
  21. }
  22.  
  23. void push(int i, int e)
  24. {
  25.     if (dane.wierzcholekStosu[i] == 10)
  26.     {
  27.         cout << "error: stack is full\n";
  28.     }
  29.     else
  30.     {
  31.        
  32.         dane.stos[i][dane.wierzcholekStosu[i]] = e;
  33.         dane.wierzcholekStosu[i]++;
  34.     }
  35.  
  36. }
  37.  
  38. void pop(int i)
  39. {
  40.     if (dane.wierzcholekStosu[i] == 0)
  41.     {
  42.         cout << "error: stack is empty\n";
  43.     }
  44.     else
  45.     {
  46.         dane.wierzcholekStosu[i]--;
  47.     }
  48.    
  49. }
  50. void delete_s(int i)
  51. {
  52.     dane.wierzcholekStosu[i] = 0;
  53. }
  54.  
  55.  
  56. void print_s(int i)
  57. {
  58.     if (dane.wierzcholekStosu[i]==0)
  59.     {
  60.         cout << "empty\n";
  61.     }
  62.     else
  63.     {
  64.         for (int j = 0; j < dane.wierzcholekStosu[i]; j++)
  65.         {
  66.             cout << dane.stos[i][j] << " ";
  67.         }
  68.         cout << "\n";
  69.     }
  70.    
  71. }
  72. void stackToStack(int i, int j)
  73. {
  74.     push(j,dane.stos[i][dane.wierzcholekStosu[i]-1]);
  75.     pop(i);
  76. }
  77.  
  78. void enqueue(int i, int e)
  79. {
  80.     if (dane.wierzcholekKolejki[i] == 10)
  81.     {
  82.         cout << "error: queue is full\n";
  83.     }
  84.     else
  85.     {
  86.         dane.kolejka[i][dane.wierzcholekKolejki[i]] = e;
  87.         dane.wierzcholekKolejki[i]++;
  88.     }
  89. }
  90.  
  91. void dequeue(int i)
  92. {
  93.     if (!dane.wierzcholekKolejki[i])
  94.     {
  95.         cout << "error: queue is empty\n";
  96.     }
  97.     else
  98.     {
  99.         dane.wierzcholekKolejki[i]--;
  100.         for (int k = 0; k < dane.wierzcholekKolejki[i]; k++)
  101.         {
  102.             dane.kolejka[i][k] = dane.kolejka[i][k + 1];
  103.         }
  104.     }
  105. }
  106.  
  107. void delete_q(int i)
  108. {
  109.     dane.wierzcholekKolejki[i] = 0;
  110. }
  111.  
  112. void new_q(int i)
  113. {
  114.  
  115. }
  116.  
  117. void print_q(int i)
  118. {
  119.     if (!dane.wierzcholekKolejki[i])
  120.     {
  121.         cout << "empty\n";
  122.     }
  123.     else
  124.     {
  125.         for (int j = dane.wierzcholekKolejki[i]-1; j >= 0; j--)
  126.         {
  127.             cout << dane.kolejka[i][j] << " ";
  128.         }
  129.         cout << "\n";
  130.     }
  131. }
  132.  
  133. void stackToQueue(int i, int e)
  134. {
  135.  
  136. }
  137.  
  138. int main(int argc, char const *argv[])
  139. {
  140.  
  141.     string operacja1parametr[8];
  142.     operacja1parametr[0] = "new_s";
  143.     operacja1parametr[1] = "pop";
  144.     operacja1parametr[2] = "delete_s";
  145.     operacja1parametr[3] = "print_s";
  146.     operacja1parametr[4] = "new_q";
  147.     operacja1parametr[5] = "dequeue";
  148.     operacja1parametr[6] = "delete_q";
  149.     operacja1parametr[7] = "print_q";
  150.  
  151.     string operacja2parametr[6];
  152.     operacja2parametr[0] = "push";
  153.     operacja2parametr[1] = "stack->stack";
  154.     operacja2parametr[2] = "enqueue";
  155.     operacja2parametr[3] = "stack->queue";
  156.     operacja2parametr[4] = "queue->queue";
  157.     operacja2parametr[5] = "queue->stack";
  158.  
  159.     void(*funkcja1parametr[8])(int);
  160.     funkcja1parametr[0] = new_s;
  161.     funkcja1parametr[1] = pop;
  162.     funkcja1parametr[2] = delete_s;
  163.     funkcja1parametr[3] = print_s;
  164.     funkcja1parametr[4] = new_q;
  165.     funkcja1parametr[5] = dequeue;
  166.     funkcja1parametr[6] = delete_q;
  167.     funkcja1parametr[7] = print_q;
  168.  
  169.     void(*funkcja2parametr[3])(int, int);
  170.     funkcja2parametr[0] = push;
  171.     funkcja2parametr[1] = stackToStack;
  172.     funkcja2parametr[2] = enqueue;
  173.     funkcja2parametr[3] = stackToQueue;
  174.     funkcja2parametr[4] = queueToQueue;
  175.     funkcja2parametr[5] = queueToStack;
  176.  
  177.  
  178.     string wejscie;
  179.     int i = 0;
  180.     int e = 0;
  181.     int j = 0;
  182.  
  183.  
  184.  
  185.     while (cin >> wejscie)
  186.     {
  187.         //cin >> wejscie;
  188.         cin >> i;
  189.  
  190.         for (j = 0; j < 8; ++j)
  191.         {
  192.             if (!operacja1parametr[j].compare(wejscie))
  193.             {
  194.                 funkcja1parametr[j](i);
  195.                 break;
  196.             }
  197.         }
  198.         if (j != 8)
  199.         {
  200.             continue;
  201.         }
  202.  
  203.         std::cin >> e;
  204.  
  205.         for (j = 0; j < 3; ++j)
  206.         {
  207.             if (!operacja2parametr[j].compare(wejscie))
  208.             {
  209.                 funkcja2parametr[j](i, e);
  210.                 break;
  211.             }
  212.         }
  213.     }
  214.     return 0;
  215. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement