Advertisement
Guest User

Untitled

a guest
Apr 24th, 2019
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.37 KB | None | 0 0
  1. #include <string>
  2. #include "cmath"
  3. #include <stdexcept>
  4. #include <vector>
  5. #include <utility>
  6. //Mateusz Gil
  7. using namespace std;
  8.  
  9. class Expression
  10. {
  11. public:
  12. virtual double calc() =0;
  13. virtual string description() =0;
  14. };
  15.  
  16. class Constant : public Expression
  17. {
  18. protected:
  19. const double value;
  20.  
  21. public:
  22. Constant(double );
  23. virtual string description() = 0;
  24. virtual double calc()=0;
  25. };
  26.  
  27. class Pi : public Constant
  28. {
  29.  
  30. public:
  31.  
  32. double calc();
  33. string description();
  34. Pi();
  35.  
  36. };
  37.  
  38. class Fi : public Constant
  39. {
  40.  
  41. public:
  42. double calc();
  43. string description();
  44. Fi();
  45. // ~Fi();
  46. };
  47.  
  48. class E : public Constant
  49. {
  50.  
  51. public:
  52. double calc();
  53. string description();
  54. E();
  55. //~E();
  56. };
  57.  
  58. class Number : public Expression
  59. {
  60. public:
  61. Number();
  62. Number(double x);
  63. string description();
  64. double calc();
  65.  
  66. private:
  67. double value;
  68.  
  69. };
  70.  
  71. class Variable : public Expression
  72. {
  73. private:
  74. string name;
  75. static vector< pair < string, double> > values;
  76.  
  77. public:
  78. static double getValue(string name);
  79. static void setValue(string name, double x);
  80. static void setName(string name);
  81. Variable(string name);
  82. double calc();
  83. string description();
  84. double Size();
  85. };
  86.  
  87. class OneArgOperator : public virtual Expression
  88. {
  89. public:
  90. OneArgOperator(Expression *e1);
  91. double calc();
  92. string description();
  93.  
  94. protected:
  95. Expression *e1;
  96.  
  97. };
  98.  
  99. class Sin : public Expression
  100. {
  101. public:
  102. double calc();
  103. string description();
  104. Sin(Expression *e1);
  105.  
  106. private:
  107. Expression *e;
  108. };
  109.  
  110. class Cos : public Expression
  111. {
  112. public:
  113. double calc();
  114. string description();
  115. Cos(Expression *e);
  116.  
  117. private:
  118. Expression *e;
  119.  
  120. };
  121.  
  122. class Exp : Expression
  123. {
  124. public:
  125. double calc();
  126. string description();
  127. Exp(Expression *e1);
  128.  
  129. private:
  130. Expression *e;
  131. };
  132.  
  133. class Ln : public Expression
  134. {
  135. public:
  136. double calc();
  137. string description();
  138. Ln(Expression *e);
  139.  
  140. private:
  141. Expression *e;
  142. };
  143.  
  144. class Abs : public Expression
  145. {
  146. public:
  147. double calc();
  148. string description();
  149. Abs(Expression *e);
  150.  
  151. private:
  152. Expression *e;
  153. };
  154.  
  155. class Opposite : public Expression
  156. {
  157. public:
  158. double calc();
  159. string description();
  160. Opposite(Expression *e);
  161.  
  162. private:
  163. Expression *e;
  164. };
  165.  
  166. class Resiprocal : public Expression // Odwrotna
  167. {
  168. public:
  169. double calc();
  170. string description();
  171. Resiprocal(Expression *e);
  172.  
  173. private:
  174. Expression *e;
  175. };
  176.  
  177. class TwoArgOperator : Expression
  178. {
  179. private:
  180. // Expression e1;
  181. // Expression e2;
  182. public:
  183. TwoArgOperator(Expression *e1, Expression *e2);
  184. double calc();
  185. string description();
  186. };
  187.  
  188. class Add : public Expression
  189. {
  190. public:
  191. double calc();
  192. string description();
  193. Add(Expression *e1, Expression *e2);
  194.  
  195. private:
  196. Expression *e1, *e2;
  197. };
  198.  
  199. class Sub : public Expression
  200. {
  201.  
  202. public:
  203. double calc();
  204. string description();
  205. Sub(Expression *e1, Expression *e2);
  206.  
  207. private:
  208. Expression *e1, *e2;
  209. };
  210.  
  211. class Mult : public Expression
  212. {
  213. public:
  214. double calc();
  215. string description();
  216. Mult(Expression *e1, Expression *e2);
  217.  
  218. private:
  219. Expression *e1, *e2;
  220. };
  221.  
  222. class Div : public Expression
  223. {
  224. public:
  225. double calc();
  226. string description();
  227. Div(Expression *e1, Expression *e2);
  228.  
  229. private:
  230. Expression *e1, *e2;
  231. };
  232.  
  233. class Log : public Expression
  234. {
  235. public:
  236. double calc();
  237. string description();
  238. Log(Expression *e1, Expression *e2);
  239.  
  240. private:
  241. Expression *e1, *e2;
  242. };
  243.  
  244. class Mod : public Expression
  245. {
  246. public:
  247. double calc();
  248. string description();
  249. Mod(Expression *e1, Expression *e2);
  250.  
  251. private:
  252. Expression *e1, *e2;
  253. };
  254.  
  255. class Pow : public Expression
  256. {
  257. public:
  258. double calc();
  259. string description();
  260. Pow(Expression *e1, Expression *e2);
  261.  
  262. private:
  263. Expression *e1, *e2;
  264. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement