Advertisement
Guest User

4D

a guest
Dec 8th, 2019
139
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.47 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. #include<fstream>
  3.  
  4. using namespace std;
  5.  
  6. struct Node{
  7. int data;
  8. struct Node* next;
  9. };
  10.  
  11. struct Node* pointer = NULL;
  12.  
  13. void push(int value){
  14. struct Node* temp;
  15. temp = new Node();
  16.  
  17. temp->data = value;
  18. temp->next = pointer;
  19. pointer = temp;
  20. }
  21. int pop(){
  22. int ret = pointer->data;
  23. struct Node* temp;
  24. temp = pointer;
  25. pointer = pointer->next;
  26. temp->next = NULL;
  27. free(temp);
  28. //ret = ret - '0';
  29. return ret;
  30. }
  31.  
  32. int top(){
  33. if (!(pointer == 0))
  34. return pointer->data;
  35. else
  36. exit(1);
  37. }
  38.  
  39. int main(){
  40.  
  41. ifstream fin("postfix.in");
  42. ofstream fout("postfix.out");
  43.  
  44. char inp[100]={0};
  45. fin.getline(inp, 100);
  46. int result;
  47. size_t len = strlen(inp);
  48. for(int i=0;i<len;i++){
  49. if(inp[i]>=48 && inp[i] <= 57){
  50. int neww = inp[i] - '0';
  51. push(neww);
  52. }else if (inp[i] == ' ')
  53. continue;
  54. else if (inp[i] == '+'){
  55. int zz = pop();
  56. //int opa = zz - '0';
  57. //cout << opa << " ";
  58. int zz2 = pop();
  59. //int opa2 = zz2 - '0';
  60. //cout << opa2 << " ";
  61. result = zz + zz2;
  62. //cout << result << "\n";
  63. push(result);
  64. //break;
  65. } else if (inp[i] == '-'){
  66. int zz = pop();
  67. //int opa = zz - '0';
  68. //cout << opa << " ";
  69. int zz2 = pop();
  70. //int opa2 = zz2 - '0';
  71. //cout << opa2 << " ";
  72. result = zz2 - zz;
  73. //cout << result << "\n";
  74. push(result);
  75. //break;
  76. } else if (inp[i] == '*'){
  77. int zz = pop();
  78. //int opa = zz - '0';
  79. //cout << opa << " ";
  80. int zz2 = pop();
  81. //int opa2 = zz2 - '0';
  82. ////cout << opa2 << " ";
  83. result = zz * zz2;
  84. //cout << result << "\n";
  85. push(result);
  86. //break;
  87. } else if (inp[i] == '/'){
  88. int zz = pop();
  89. //int opa = zz - '0';
  90. //cout << opa << " ";
  91. int zz2 = pop();
  92. //int opa2 = zz2 - '0';
  93. //cout << opa2 << " ";
  94. result = zz2 / zz;
  95. //cout << result << "\n";
  96. push(result);
  97. //break;
  98. } else
  99. fout << "try again!";
  100.  
  101. }
  102. fout << top();
  103. return 0;
  104. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement