fork download
  1. #include <iostream>
  2. #include <stack>
  3. #include <string>
  4. #include <cctype>
  5.  
  6. using namespace std;
  7.  
  8. int main()
  9. {
  10. int i;
  11. char inputEx[128];
  12. char token;
  13. int value, value1, value2;
  14. stack<char> myStack;
  15.  
  16. cout << "Please enter the RPN inputEx to be evaluated: " << endl <<
  17. "(Note: Input must end with an equals sign (=))"
  18. << ": " << endl;
  19.  
  20. cin.getline(inputEx, 128);
  21.  
  22. i = 0;
  23.  
  24. for(i=0; inputEx[i]!='='; i++)
  25. {
  26. token = inputEx[i];
  27.  
  28. if(token == ' ') continue;
  29.  
  30. if (isdigit(token))
  31. {
  32. value = token - '0';
  33. myStack.push(value);
  34. }
  35. else
  36. {
  37. value2 = myStack.top();
  38. myStack.pop();
  39. value1 = myStack.top();
  40. myStack.pop();
  41. switch(token)
  42. {
  43. case '+': value = value1 + value2;
  44. break;
  45. case '-': value = value1 - value2;
  46. break;
  47. case '*': value = value1*value2;
  48. break;
  49. case '/': value = value1/value2;
  50. break;
  51. }
  52. myStack.push(value);
  53. }
  54. }
  55.  
  56. value = myStack.top();
  57. myStack.pop();
  58.  
  59. cout << inputEx << " " << value << endl;
  60. cout << endl;
  61.  
  62. return 0;
  63. }
Success #stdin #stdout 0.01s 2820KB
stdin
1 2 3 + + =
stdout
Please enter the RPN inputEx to be evaluated: 
(Note: Input must end with an equals sign (=)): 
1 2 3 + + = 6