Advertisement
Guest User

Untitled

a guest
Oct 20th, 2018
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.69 KB | None | 0 0
  1. #include<iostream>
  2. #include<string>
  3. class Expression
  4. {
  5. public:
  6. virtual Expression *diff() = 0;
  7. virtual void print() = 0;
  8.  
  9. };
  10. class Number : public Expression
  11. {
  12. int c;
  13. public:
  14. Number (int r) { c = r; }
  15. Expression *diff() override{ return 0; }
  16. void print()
  17. {
  18. std::cout <<c << " ";
  19. }
  20. };
  21. class Variable : public Expression
  22. {
  23. std::string *v1;
  24. public:
  25. Variable( std::string *v)
  26. {
  27. v1 = v;
  28. }
  29. Expression *diff() override
  30. {
  31. return new Variable( v1->diff());
  32. }
  33. void print() override
  34. {
  35. std::cout << v1->diff <<" " ;
  36. }
  37.  
  38. };
  39. class Add : public Expression
  40. {
  41. Expression *Ex1, *Ex2;
  42. public:
  43. Add(Expression *u, Expression *v)
  44. {
  45. Ex1 = u;
  46. Ex2 = v;
  47. }
  48. Expression *diff( ) override
  49. {
  50. return new Add(Ex1->diff(), Ex2->diff());
  51. }
  52. void print() override { std::cout << "(" << Ex1->diff() << "+" << Ex2->diff() << ")"; }
  53.  
  54. };
  55. class Sub : public Expression
  56. {
  57. Expression *e1, *e2;
  58. public:
  59. Sub(Expression *u, Expression *v)
  60. {
  61. e1 = u;
  62. e2 = v;
  63. }
  64. Expression *diff() override
  65. {
  66. return new Sub(e1->diff(),e2->diff()) ;
  67. }
  68. void print() override
  69. {
  70. std::cout << "(" << e1->diff() << "-" << e2->diff() << ")";
  71. }
  72.  
  73. };
  74.  
  75. /*class Mul : public Expression
  76. {
  77. Expression *u, *v;
  78. public:
  79. Mul(Expression *y, Expression *p) { u = y; v = p; }
  80. Expression *diff() override
  81. {
  82. return new Sub(u*(v->diff()), v*(u->diff()));
  83. }
  84. void print() override
  85. {
  86.  
  87. std::cout<<u
  88. }
  89. };*/
  90. class Div : public Expression
  91. {
  92.  
  93. };
  94. int main()
  95. {
  96. int r;
  97. Expression *e = new Add(new Variable('x'), new Number(1));
  98. std::cout << "\n";
  99. Expression *pr = e->diff();
  100. std::cout << "\n";
  101.  
  102.  
  103.  
  104. //t.print();
  105. //a.print();
  106. std::cin >>r ;
  107.  
  108.  
  109.  
  110.  
  111. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement