fork download
  1. #include <iostream>
  2. #include <stdlib.h>
  3. #include <stack>
  4. #include <string.h>
  5. #include <sys/stat.h>
  6. #include <sys/types.h>
  7. #include <unistd.h>
  8. //#include <strstream.h>
  9.  
  10.  
  11. using namespace std;
  12.  
  13. bool isOperator(char ch)
  14. {
  15. if (ch=='+' || ch=='-' || ch=='*' || ch=='/')
  16. return true;
  17. else
  18. return false;
  19. }
  20.  
  21.  
  22. int performOperation(int op1, int op2, char op)
  23. {
  24. int ans;
  25. switch(op){
  26. case '+':
  27. ans = op2 + op1;
  28. break;
  29. case '-':
  30. ans = op2 - op1;
  31. break;
  32. case '*':
  33. ans = op2 * op1;
  34. break;
  35. case '/':
  36. ans = op2 / op1;
  37. break;
  38. }
  39. return ans;
  40. }
  41.  
  42.  
  43. int main()
  44. {
  45. char exp[1000]="", buffer[15]="";
  46. int i=0,op1=0, op2=0, len=0, j=0, x=0, elemntCnt=0;
  47. stack<int> s;
  48. gets(exp);
  49. cout <<"Enter a Postfix Expression: ( e.g. 23 34 * )" << endl;
  50.  
  51. len = strlen(exp);
  52. cout << "length of expression:"<<len<<endl;
  53. j = 0;
  54.  
  55. if (len > 0)
  56. {
  57. for(i=0; i<len;i++)
  58. {
  59. if(exp[i]>='0' && exp[i]<='9')
  60. {
  61. buffer[j++] = exp[i];
  62. }
  63. else if(exp[i]==' ')
  64. {
  65. if(j>0)
  66. {
  67. buffer[j] = '\0';
  68. x = atoi(buffer);
  69. s.push(x);
  70. memset(buffer, '\0', sizeof(buffer));
  71. j = 0;
  72. elemntCnt++;
  73. }
  74. }
  75. else if(isOperator(exp[i]))
  76. {
  77. if (elemntCnt<2)
  78. {
  79. cout <<"invalid format" << endl;
  80. break;
  81. }
  82. else
  83. {
  84. op1 = s.top();
  85. s.pop();
  86. op2 = s.top();
  87. s.pop();
  88. cout << "Performing operation "<<op1<<exp[i]<<op2<<endl;
  89. s.push(performOperation(op1, op2, exp[i]));
  90. cout <<"Answer for above is ::" << s.top() << endl;
  91.  
  92. }
  93. }
  94. else
  95. {
  96. cout <<"invalid characters in expression" << endl;
  97. break;
  98. }
  99. }//end for
  100. }
  101. else
  102. {
  103. cout <<"Exiting" << endl;
  104. }
  105. return 0;
  106. }
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
Standard input is empty
compilation info
prog.cpp:48:5: error: use of undeclared identifier 'gets'
    gets(exp);
    ^
1 error generated.
stdout
Standard output is empty