Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <string>
- #include <stack>
- #include <queue>
- using namespace std;
- int sum(stack<int> & numbers)
- {
- int result = 0;
- int num1 = numbers.top();
- numbers.pop();
- int num2 = numbers.top();
- numbers.pop();
- result = num1 + num2;
- return result;
- }
- int subtract(stack<int>& numbers)
- {
- int result = 0;
- int num1 = numbers.top();
- numbers.pop();
- int num2 = numbers.top();
- numbers.pop();
- result = num1 - num2;
- return result;
- }
- void concat(stack<int>& numbers)
- {
- string num1 = to_string(numbers.top());
- numbers.pop();
- string num2 = to_string(numbers.top());
- numbers.pop();
- string result = num2 + num1;
- int number = stoi(result);
- numbers.push(number);
- }
- void discard(stack<int>& numbers)
- {
- numbers.pop();
- }
- void transformToQueue(stack<int>& numbers, stack<int> & temp, queue<int> & tempQueue)
- {
- while (!numbers.empty())
- {
- temp.push(numbers.top());
- numbers.pop();
- }
- while (!temp.empty())
- {
- tempQueue.push(temp.top());
- temp.pop();
- }
- }
- int main()
- {
- stack<int> sequence;
- string input;
- cin >> input;
- while (input != "end")
- {
- if (isdigit(input[0]) || input[0] == '-')
- {
- int number = stoi(input);
- sequence.push(number);
- }
- else if (input == "sum")
- {
- int number = sum(sequence);
- sequence.push(number);
- }
- else if (input == "subtract")
- {
- int number = subtract(sequence);
- sequence.push(number);
- }
- else if (input == "concat")
- {
- concat(sequence);
- }
- else if (input == "discard")
- {
- discard(sequence);
- }
- cin >> input;
- }
- queue<int> output;
- stack<int> temp;
- transformToQueue(sequence, temp, output);
- while (!output.empty())
- {
- cout << output.front() << endl;
- output.pop();
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement