Advertisement
Guest User

Untitled

a guest
Apr 22nd, 2018
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.55 KB | None | 0 0
  1. #include <iostream>
  2. #include<cstring>
  3. using namespace std;
  4. int const MAX = 100;
  5.  
  6. class Stack
  7. {
  8. private:
  9. double *arr;
  10. int top;
  11. int Size;
  12. bool full() const;
  13.  
  14.  
  15. public:
  16.  
  17. Stack();
  18. Stack(Stack const&);
  19. ~Stack();
  20. Stack& operator=(Stack const &);
  21. bool Empty() const;
  22. double peek() const;
  23. void push(double);
  24. double pop();
  25.  
  26. };
  27.  
  28.  
  29.  
  30.  
  31. Stack::Stack()
  32. {
  33. Size = MAX;
  34. arr = new double[Size];
  35. top = -1;
  36. }
  37.  
  38. Stack::Stack(Stack const& s) : Size(s.Size), top(s.top)
  39. {
  40. arr = new double[Size];
  41. for (int i = 0; i <= top; i++)
  42. arr[i] = s.arr[i];
  43. }
  44.  
  45. Stack& Stack::operator=(Stack const& s) {
  46. if (this != &s) {
  47. Size = s.Size;
  48. top = s.top;
  49. delete[] arr;
  50. arr = new double[Size];
  51. for (int i = 0; i <= top; i++)
  52. arr[i] = s.arr[i];
  53. }
  54. return *this;
  55. }
  56.  
  57.  
  58. Stack::~Stack()
  59. {
  60. delete[] arr;
  61. }
  62.  
  63. bool Stack::Empty() const
  64. {
  65. return top == -1;
  66. }
  67.  
  68. double Stack::peek() const
  69. {
  70. if (Empty()) {
  71. cout << "You try to read from empty stack!\n";
  72. return 0;
  73. }
  74.  
  75. return arr[top];
  76. }
  77.  
  78. void Stack::push(double x) {
  79. if (full()) {
  80. cout << "The stack is full. You can push only 100 doubles!/n";
  81. }
  82. arr[++top] = x;
  83. }
  84.  
  85. bool Stack::full() const {
  86. return top == Size - 1;
  87. }
  88.  
  89. double Stack::pop() {
  90. if (Empty()) {
  91. cout << "You try to delete form empty stack!\n";
  92. return 0;
  93. }
  94. return arr[top--];
  95. }
  96.  
  97.  
  98. //#include<iostream>
  99. #include <stdlib.h>
  100. #include <stdio.h>
  101. #include <ctype.h>
  102. int MaxSize = 100;
  103. double PRNcalc(char arr[])
  104. {
  105.  
  106.  
  107. //std::cout<<"Niza e :"<<arr<<std::endl;
  108.  
  109. char* buffer;
  110. double n;
  111. double d;
  112. int k=0;
  113. int Size = 100;
  114. //arr = new char[size];
  115. buffer = new char[Size];
  116. Stack NewSteak;
  117. char in;
  118.  
  119.  
  120. n = atof(buffer);
  121. for (int i = 0; i < strlen(arr); i++)
  122. {
  123. in = arr[i];
  124. //std::cout<<arr[i];
  125.  
  126. buffer[k] = arr[i];
  127. k++;
  128. if (in == '+') {
  129. double a = NewSteak.peek();
  130. NewSteak.pop();
  131. double b = NewSteak.peek();
  132. NewSteak.pop();
  133. NewSteak.push(a + b);
  134.  
  135. }
  136. else if (in == '-') {
  137. double a = NewSteak.peek();
  138. NewSteak.pop();
  139. double b = NewSteak.peek();
  140. NewSteak.pop();
  141. NewSteak.push(a - b);
  142.  
  143. }
  144. else if (in == '*') {
  145. double a = NewSteak.peek();
  146. NewSteak.pop();
  147. double b = NewSteak.peek();
  148. NewSteak.pop();
  149. NewSteak.push(a * b);
  150. }
  151. else if (in == '/') {
  152. double a = NewSteak.peek();
  153. NewSteak.pop();
  154. double b = NewSteak.peek();
  155. NewSteak.pop();
  156. NewSteak.push(a / b);}
  157. if (isspace(in))
  158. {
  159.  
  160. if (in == '+') {
  161. double a = NewSteak.peek();
  162. NewSteak.pop();
  163. double b = NewSteak.peek();
  164. NewSteak.pop();
  165. NewSteak.push(a + b);
  166.  
  167. }
  168. else if (in == '-') {
  169. double a = NewSteak.peek();
  170. NewSteak.pop();
  171. double b = NewSteak.peek();
  172. NewSteak.pop();
  173. NewSteak.push(a - b);
  174.  
  175. }
  176. else if (in == '*') {
  177. double a = NewSteak.peek();
  178. NewSteak.pop();
  179. double b = NewSteak.peek();
  180. NewSteak.pop();
  181. NewSteak.push(a * b);
  182. }
  183. else if (in == '/') {
  184. double a = NewSteak.peek();
  185. NewSteak.pop();
  186. double b = NewSteak.peek();
  187. NewSteak.pop();
  188. NewSteak.push(a / b);
  189.  
  190. }
  191. else {
  192.  
  193. n = atof(buffer);
  194.  
  195. NewSteak.push(n);
  196.  
  197. delete[] buffer;
  198. k=0;
  199. buffer = new char[Size];
  200.  
  201. }}
  202.  
  203.  
  204. }
  205. d = NewSteak.peek();
  206. return d;
  207. }
  208. int main()
  209. {
  210. double PRNcalc(char arr[]);
  211. char arr[MAX];
  212. std::cout << "Enter the notation"<<std::endl;
  213.  
  214. std::cin.getline(arr,100);
  215.  
  216. std::cout<<"\nRESULT:"<<PRNcalc(arr);
  217.  
  218. return 0;
  219. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement