#include <iostream>
#include <stack>
#include <string>
#include <cctype>
using namespace std;
int main()
{
int i;
char inputEx[128];
char token;
int value, value1, value2;
stack<char> myStack;
cout << "Please enter the RPN inputEx to be evaluated: " << endl <<
"(Note: Input must end with an equals sign (=))"
<< ": " << endl;
cin.getline(inputEx, 128);
i = 0;
for(i=0; inputEx[i]!='='; i++)
{
token = inputEx[i];
if(token == ' ') continue;
if (isdigit(token))
{
value = token - '0';
myStack.push(value);
}
else
{
value2 = myStack.top();
myStack.pop();
value1 = myStack.top();
myStack.pop();
switch(token)
{
case '+': value = value1 + value2;
break;
case '-': value = value1 - value2;
break;
case '*': value = value1*value2;
break;
case '/': value = value1/value2;
break;
}
myStack.push(value);
}
}
value = myStack.top();
myStack.pop();
cout << inputEx << " " << value << endl;
cout << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RhY2s+CQojaW5jbHVkZSA8c3RyaW5nPgkKI2luY2x1ZGUgPGNjdHlwZT4JCgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IG1haW4oKQp7CglpbnQgaTsKCWNoYXIgaW5wdXRFeFsxMjhdOwoJY2hhciB0b2tlbjsKCWludCB2YWx1ZSwgdmFsdWUxLCB2YWx1ZTI7CglzdGFjazxjaGFyPiBteVN0YWNrOwoKCWNvdXQgPDwgIlBsZWFzZSBlbnRlciB0aGUgUlBOIGlucHV0RXggdG8gYmUgZXZhbHVhdGVkOiAiIDw8IGVuZGwgPDwKCQkiKE5vdGU6IElucHV0IG11c3QgZW5kIHdpdGggYW4gZXF1YWxzIHNpZ24gKD0pKSIKCQk8PCAiOiAiIDw8IGVuZGw7CgkJCgljaW4uZ2V0bGluZShpbnB1dEV4LCAxMjgpOwogIAoJaSA9IDA7CgkKCWZvcihpPTA7IGlucHV0RXhbaV0hPSc9JzsgaSsrKQoJewoJCXRva2VuID0gaW5wdXRFeFtpXTsKCQkKCQlpZih0b2tlbiA9PSAnICcpIGNvbnRpbnVlOwoJCQoJCWlmIChpc2RpZ2l0KHRva2VuKSkKCQl7CgkJCXZhbHVlID0gdG9rZW4gLSAnMCc7CgkJCW15U3RhY2sucHVzaCh2YWx1ZSk7CgkJfQoJCWVsc2UKCQl7CgkJCXZhbHVlMiA9IG15U3RhY2sudG9wKCk7CgkJCW15U3RhY2sucG9wKCk7CgkJCXZhbHVlMSA9IG15U3RhY2sudG9wKCk7CgkJCW15U3RhY2sucG9wKCk7CgkJCXN3aXRjaCh0b2tlbikKCQkJewoJCQkJY2FzZSAnKyc6IHZhbHVlID0gdmFsdWUxICsgdmFsdWUyOwoJCQkJYnJlYWs7CgkJCQljYXNlICctJzogdmFsdWUgPSB2YWx1ZTEgLSB2YWx1ZTI7CgkJCQlicmVhazsKCQkJCWNhc2UgJyonOiB2YWx1ZSA9IHZhbHVlMSp2YWx1ZTI7CgkJCQlicmVhazsKCQkJCWNhc2UgJy8nOiB2YWx1ZSA9IHZhbHVlMS92YWx1ZTI7CgkJCQlicmVhazsKCQkJfQoJCQlteVN0YWNrLnB1c2godmFsdWUpOwoJCX0KCX0KCQoJdmFsdWUgPSBteVN0YWNrLnRvcCgpOwoJbXlTdGFjay5wb3AoKTsKCQoJY291dCA8PCBpbnB1dEV4IDw8ICIgIiA8PCB2YWx1ZSA8PCBlbmRsOwoJY291dCA8PCBlbmRsOwoJCglyZXR1cm4gMDsKfQ==