Advertisement
MaPV

2_3_symb_diff

Oct 14th, 2016
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.58 KB | None | 0 0
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. class Expression {
  5. public:
  6. virtual ~Expression(){}
  7. virtual Expression *diff()=0;
  8. virtual void print()=0;
  9. };
  10.  
  11.  
  12. class Number:public Expression{
  13. int Num;
  14. public:
  15. Number(int n):Num(n){}
  16. Expression *diff(){return new Number(0);}
  17. void print (){
  18.     cout<<Num;
  19. }
  20. };
  21. class Variable : public Expression{
  22. char Var;
  23. public:
  24. Variable(char v):Var(v){}
  25. Expression *diff(){return new Number(1);}
  26. void print (){
  27.     cout << Var;
  28. }
  29. };
  30.  
  31.  
  32. class Add : public Expression{
  33. Expression *x1;
  34. Expression *x2;
  35. Expression *Add1;
  36. Expression *Add2;
  37. public:
  38. Add(Expression *Add1,Expression *Add2):x1(Add1),x2(Add2){};
  39. Expression *diff(){return new Add(x1->diff(),x2->diff());}
  40. void print (){
  41. cout<<"(";
  42.     x1->print();
  43.     cout<<"+";
  44.     x2->print();
  45.     cout<<")";
  46. }
  47. };
  48.  
  49. class Sub :public Expression{
  50.     Expression *x1;
  51.     Expression *x2;
  52.     public:
  53.     Sub(Expression *Sub1,Expression *Sub2):x1(Sub1),x2(Sub2){}
  54.     Expression *diff(){return new Sub(x1->diff(),x2->diff()); }
  55.     void print (){
  56.     cout<<"(";
  57.         x1->print();
  58.         cout<<"-";
  59.         x2->print();
  60.         cout<<")";
  61.     }
  62. };
  63.  
  64. class Mul : public Expression{
  65.     Expression *x1;
  66.     Expression *x2;
  67.     public:
  68.     Mul(Expression *Mul1,Expression *Mul2):x1(Mul1),x2(Mul2){}
  69.     Expression *diff(){return new Add(new Mul(x1->diff(),x2),new Mul(x1,x2->diff())); }
  70.     void print (){
  71.         x1->print();
  72.         cout<<"*";
  73.         x2->print();
  74.     }
  75. };
  76.  
  77. class Div : public Expression{
  78.     Expression *x1;
  79.     Expression *x2;
  80. public:
  81.     Div (Expression *Div1,Expression *Div2) :x1 (Div1),x2 (Div2){}
  82.     Expression *diff (){ return new Div(new Sub(new Mul (x2,x1->diff ()),new Mul (x1,x2->diff ())),new Mul(x2,x2)); }
  83.     void print (){
  84.         x1->print ();
  85.         cout << "/";
  86.         x2->print ();
  87.     }
  88. };
  89.  
  90. int main (){
  91. setlocale(LC_ALL,"Ru");
  92. Expression *a=new Add(new Variable('x'),new Number(45));
  93. cout<<"Дифференциал суммы  ";
  94. a->print();
  95. cout<<"  =  ";
  96. Expression *da=a->diff();
  97. da->print();
  98. cout<<endl;
  99.  
  100. Expression *s=new Sub(da, new Variable('k'));
  101. cout<<"Дифференциал разности  ";
  102. s->print();
  103. cout << "  =  ";
  104. Expression *ds=s->diff();
  105. ds->print();
  106. cout<<endl;
  107.  
  108. Expression *m=new Mul(new Add(new Number(1),new Variable('x')),new Variable('y'));
  109. cout<<"Дифференциал произведения  ";
  110. m->print();
  111. cout << "  =  ";
  112. Expression *dm=m->diff();
  113. dm->print();
  114. cout<<endl;
  115.  
  116. Expression *d = new Div (new Number(1),new Variable ('y'));
  117. cout << "Дифференциал частного  ";
  118. d->print ();
  119. cout << "  =  ";
  120. Expression *dd = d->diff ();
  121. dd->print ();
  122. cout << endl;
  123.  
  124. system("pause");
  125. return 0;
  126. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement