Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- class Expression {
- public:
- virtual ~Expression(){}
- virtual Expression *diff()=0;
- virtual void print()=0;
- };
- class Number:public Expression{
- int Num;
- public:
- Number(int n):Num(n){}
- Expression *diff(){return new Number(0);}
- void print (){
- cout<<Num;
- }
- };
- class Variable : public Expression{
- char Var;
- public:
- Variable(char v):Var(v){}
- Expression *diff(){return new Number(1);}
- void print (){
- cout << Var;
- }
- };
- class Add : public Expression{
- Expression *x1;
- Expression *x2;
- Expression *Add1;
- Expression *Add2;
- public:
- Add(Expression *Add1,Expression *Add2):x1(Add1),x2(Add2){};
- Expression *diff(){return new Add(x1->diff(),x2->diff());}
- void print (){
- cout<<"(";
- x1->print();
- cout<<"+";
- x2->print();
- cout<<")";
- }
- };
- class Sub :public Expression{
- Expression *x1;
- Expression *x2;
- public:
- Sub(Expression *Sub1,Expression *Sub2):x1(Sub1),x2(Sub2){}
- Expression *diff(){return new Sub(x1->diff(),x2->diff()); }
- void print (){
- cout<<"(";
- x1->print();
- cout<<"-";
- x2->print();
- cout<<")";
- }
- };
- class Mul : public Expression{
- Expression *x1;
- Expression *x2;
- public:
- Mul(Expression *Mul1,Expression *Mul2):x1(Mul1),x2(Mul2){}
- Expression *diff(){return new Add(new Mul(x1->diff(),x2),new Mul(x1,x2->diff())); }
- void print (){
- x1->print();
- cout<<"*";
- x2->print();
- }
- };
- class Div : public Expression{
- Expression *x1;
- Expression *x2;
- public:
- Div (Expression *Div1,Expression *Div2) :x1 (Div1),x2 (Div2){}
- Expression *diff (){ return new Div(new Sub(new Mul (x2,x1->diff ()),new Mul (x1,x2->diff ())),new Mul(x2,x2)); }
- void print (){
- x1->print ();
- cout << "/";
- x2->print ();
- }
- };
- int main (){
- setlocale(LC_ALL,"Ru");
- Expression *a=new Add(new Variable('x'),new Number(45));
- cout<<"Дифференциал суммы ";
- a->print();
- cout<<" = ";
- Expression *da=a->diff();
- da->print();
- cout<<endl;
- Expression *s=new Sub(da, new Variable('k'));
- cout<<"Дифференциал разности ";
- s->print();
- cout << " = ";
- Expression *ds=s->diff();
- ds->print();
- cout<<endl;
- Expression *m=new Mul(new Add(new Number(1),new Variable('x')),new Variable('y'));
- cout<<"Дифференциал произведения ";
- m->print();
- cout << " = ";
- Expression *dm=m->diff();
- dm->print();
- cout<<endl;
- Expression *d = new Div (new Number(1),new Variable ('y'));
- cout << "Дифференциал частного ";
- d->print ();
- cout << " = ";
- Expression *dd = d->diff ();
- dd->print ();
- cout << endl;
- system("pause");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement