Advertisement
mitakvd

3. Commands

Oct 14th, 2019
221
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.77 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3. #include <stack>
  4. #include <queue>
  5. using namespace std;
  6.  
  7. int sum(stack<int> & numbers)
  8. {
  9.     int result = 0;
  10.     int num1 = numbers.top();
  11.     numbers.pop();
  12.     int num2 = numbers.top();
  13.     numbers.pop();
  14.  
  15.     result = num1 + num2;
  16.     return result;
  17. }
  18.  
  19. int subtract(stack<int>& numbers)
  20. {
  21.     int result = 0;
  22.     int num1 = numbers.top();
  23.     numbers.pop();
  24.     int num2 = numbers.top();
  25.     numbers.pop();
  26.  
  27.     result = num1 - num2;
  28.     return result;
  29. }
  30.  
  31. void concat(stack<int>& numbers)
  32. {
  33.     string num1 = to_string(numbers.top());
  34.     numbers.pop();
  35.     string num2 = to_string(numbers.top());
  36.     numbers.pop();
  37.  
  38.     string result = num2 + num1;
  39.     int number = stoi(result);
  40.     numbers.push(number);
  41. }
  42.  
  43. void discard(stack<int>& numbers)
  44. {
  45.     numbers.pop();
  46. }
  47.  
  48. void transformToQueue(stack<int>& numbers, stack<int> & temp, queue<int> & tempQueue)
  49. {
  50.     while (!numbers.empty())
  51.     {
  52.         temp.push(numbers.top());
  53.         numbers.pop();
  54.     }
  55.  
  56.     while (!temp.empty())
  57.     {
  58.         tempQueue.push(temp.top());
  59.         temp.pop();
  60.     }
  61. }
  62.  
  63. int main()
  64. {
  65.     stack<int> sequence;
  66.     string input;
  67.     cin >> input;
  68.     while (input != "end")
  69.     {
  70.         if (isdigit(input[0]) || input[0] == '-')
  71.         {
  72.             int number = stoi(input);
  73.             sequence.push(number);
  74.         }      
  75.         else if (input == "sum")
  76.         {
  77.             int number = sum(sequence);
  78.             sequence.push(number);
  79.         }
  80.         else if (input == "subtract")
  81.         {
  82.             int number = subtract(sequence);
  83.             sequence.push(number);
  84.         }
  85.         else if (input == "concat")
  86.         {
  87.             concat(sequence);
  88.         }
  89.         else if (input == "discard")
  90.         {
  91.             discard(sequence);
  92.         }
  93.        
  94.         cin >> input;
  95.     }
  96.  
  97.     queue<int> output;
  98.     stack<int> temp;
  99.     transformToQueue(sequence, temp, output);
  100.  
  101.     while (!output.empty())
  102.     {
  103.         cout << output.front() << endl;
  104.         output.pop();
  105.     }
  106.    
  107.     return 0;
  108. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement