#include <iostream>
#include <stack> //stack header file
using namespace std;
stack <int> operands;
int main()
{
int input();
void evaluate();
}
int input(int, char) //user inputs 3 items into a stack
{
int item1, item2, item3; //push 3 input items onto a stack and ask for the two operators
char op, op2;
cout << "Enter your postfix expression" << endl;
cout << "(Enter three numbers followed by two operators, one per line)" << endl;
cin >> item1;
operands.push(item1);
cin >> item2;
operands.push(item2);
cin >> item3;
operands.push(item3);
cin >> op;
cin >> op2;
return op, op2, item1, item2, item3;
}
void evaluate(char &op, char &op2, int &item1, int &item2, int &item3) //evaluate function operations included
{
item3 = operands.top(); //ask for the second operator and do the destignated operation
operands.pop();
item2 = operands.top();
operands.pop();
if(op =='+')
item2 = item3+item2;
else if(op=='*')
item2 = item3*item2;
else if(op=='-')
item2 = item3-item2;
else if(op=='/')
item2 = item3/item2;
else if(op=='%')
item2 = item3%item2;
else
cout << "You have entered an incorrect operator" << endl;
operands.push(item2); //push the result back to top of stack
operands.pop();
operands.pop();
if(op2 =='+')
item1 = item2+item1;
else if(op2=='*')
item1 = item2+item1;
else if(op2=='-')
item1 = item2-item1;
else if(op2=='/')
item1 = item2/item1;
else if(op2=='%')
item1=item2%item1;
else
cout << "You have entered an incorrect operator" << endl;
operands.push(item1); //push result back to top of stack
cout << "The number remaining in the stack after those operations is " << item1 << endl;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RhY2s+IC8vc3RhY2sgaGVhZGVyIGZpbGUKCnVzaW5nIG5hbWVzcGFjZSBzdGQ7IAoKc3RhY2sgPGludD4gb3BlcmFuZHM7CgoKaW50IG1haW4oKSAKewoJaW50IGlucHV0KCk7IAoJdm9pZCBldmFsdWF0ZSgpOyAKCn0KCgoKaW50IGlucHV0KGludCwgY2hhcikgLy91c2VyIGlucHV0cyAzIGl0ZW1zIGludG8gYSBzdGFjawp7CglpbnQgaXRlbTEsIGl0ZW0yLCBpdGVtMzsgLy9wdXNoIDMgaW5wdXQgaXRlbXMgb250byBhIHN0YWNrIGFuZCBhc2sgZm9yIHRoZSB0d28gb3BlcmF0b3JzCgljaGFyIG9wLCBvcDI7IAoJY291dCA8PCAiRW50ZXIgeW91ciBwb3N0Zml4IGV4cHJlc3Npb24iIDw8IGVuZGw7Cgljb3V0IDw8ICIoRW50ZXIgdGhyZWUgbnVtYmVycyBmb2xsb3dlZCBieSB0d28gb3BlcmF0b3JzLCBvbmUgcGVyIGxpbmUpIiA8PCBlbmRsOyAgCgljaW4gPj4gaXRlbTE7IAoJb3BlcmFuZHMucHVzaChpdGVtMSk7CgljaW4gPj4gaXRlbTI7CglvcGVyYW5kcy5wdXNoKGl0ZW0yKTsKCWNpbiA+PiBpdGVtMzsgCglvcGVyYW5kcy5wdXNoKGl0ZW0zKTsKCWNpbiA+PiBvcDsKCWNpbiA+PiBvcDI7IAoJcmV0dXJuIG9wLCBvcDIsIGl0ZW0xLCBpdGVtMiwgaXRlbTM7CgkKfQoKdm9pZCBldmFsdWF0ZShjaGFyICZvcCwgY2hhciAmb3AyLCBpbnQgJml0ZW0xLCBpbnQgJml0ZW0yLCBpbnQgJml0ZW0zKSAvL2V2YWx1YXRlIGZ1bmN0aW9uIG9wZXJhdGlvbnMgaW5jbHVkZWQKewoJCgoJaXRlbTMgPSBvcGVyYW5kcy50b3AoKTsgIC8vYXNrIGZvciB0aGUgc2Vjb25kIG9wZXJhdG9yIGFuZCBkbyB0aGUgZGVzdGlnbmF0ZWQgb3BlcmF0aW9uCglvcGVyYW5kcy5wb3AoKTsKCWl0ZW0yID0gb3BlcmFuZHMudG9wKCk7IAoJb3BlcmFuZHMucG9wKCk7IAoJaWYob3AgPT0nKycpIAoJCWl0ZW0yID0gaXRlbTMraXRlbTI7IAoJZWxzZSBpZihvcD09JyonKQoJCWl0ZW0yID0gaXRlbTMqaXRlbTI7IAoJZWxzZSBpZihvcD09Jy0nKQoJCWl0ZW0yID0gaXRlbTMtaXRlbTI7CgllbHNlIGlmKG9wPT0nLycpCgkJaXRlbTIgPSBpdGVtMy9pdGVtMjsgCgllbHNlIGlmKG9wPT0nJScpCgkJaXRlbTIgPSBpdGVtMyVpdGVtMjsKCWVsc2UgCgkJY291dCA8PCAiWW91IGhhdmUgZW50ZXJlZCBhbiBpbmNvcnJlY3Qgb3BlcmF0b3IiIDw8IGVuZGw7IAoJb3BlcmFuZHMucHVzaChpdGVtMik7IC8vcHVzaCB0aGUgcmVzdWx0IGJhY2sgdG8gdG9wIG9mIHN0YWNrCgoJb3BlcmFuZHMucG9wKCk7CglvcGVyYW5kcy5wb3AoKTsKCglpZihvcDIgPT0nKycpIAoJCWl0ZW0xID0gaXRlbTIraXRlbTE7CgllbHNlIGlmKG9wMj09JyonKQoJCWl0ZW0xID0gaXRlbTIraXRlbTE7CgllbHNlIGlmKG9wMj09Jy0nKQoJCWl0ZW0xID0gaXRlbTItaXRlbTE7CgllbHNlIGlmKG9wMj09Jy8nKQoJCWl0ZW0xID0gaXRlbTIvaXRlbTE7CgllbHNlIGlmKG9wMj09JyUnKQoJCWl0ZW0xPWl0ZW0yJWl0ZW0xOyAKCWVsc2UKCQkgY291dCA8PCAiWW91IGhhdmUgZW50ZXJlZCBhbiBpbmNvcnJlY3Qgb3BlcmF0b3IiIDw8IGVuZGw7IAoJb3BlcmFuZHMucHVzaChpdGVtMSk7IC8vcHVzaCByZXN1bHQgYmFjayB0byB0b3Agb2Ygc3RhY2sKCWNvdXQgPDwgIlRoZSBudW1iZXIgcmVtYWluaW5nIGluIHRoZSBzdGFjayBhZnRlciB0aG9zZSBvcGVyYXRpb25zIGlzICIgPDwgaXRlbTEgPDwgZW5kbDsgCgkKfQo=