Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- #include<string>
- class Expression
- {
- public:
- virtual Expression *diff() = 0;
- virtual void print() = 0;
- };
- class Number : public Expression
- {
- int c;
- public:
- Number (int r) { c = r; }
- Expression *diff() override{ return 0; }
- void print()
- {
- std::cout <<c << " ";
- }
- };
- class Variable : public Expression
- {
- std::string *v1;
- public:
- Variable( std::string *v)
- {
- v1 = v;
- }
- Expression *diff() override
- {
- return new Variable( v1->diff());
- }
- void print() override
- {
- std::cout << v1->diff <<" " ;
- }
- };
- class Add : public Expression
- {
- Expression *Ex1, *Ex2;
- public:
- Add(Expression *u, Expression *v)
- {
- Ex1 = u;
- Ex2 = v;
- }
- Expression *diff( ) override
- {
- return new Add(Ex1->diff(), Ex2->diff());
- }
- void print() override { std::cout << "(" << Ex1->diff() << "+" << Ex2->diff() << ")"; }
- };
- class Sub : public Expression
- {
- Expression *e1, *e2;
- public:
- Sub(Expression *u, Expression *v)
- {
- e1 = u;
- e2 = v;
- }
- Expression *diff() override
- {
- return new Sub(e1->diff(),e2->diff()) ;
- }
- void print() override
- {
- std::cout << "(" << e1->diff() << "-" << e2->diff() << ")";
- }
- };
- /*class Mul : public Expression
- {
- Expression *u, *v;
- public:
- Mul(Expression *y, Expression *p) { u = y; v = p; }
- Expression *diff() override
- {
- return new Sub(u*(v->diff()), v*(u->diff()));
- }
- void print() override
- {
- std::cout<<u
- }
- };*/
- class Div : public Expression
- {
- };
- int main()
- {
- int r;
- Expression *e = new Add(new Variable('x'), new Number(1));
- std::cout << "\n";
- Expression *pr = e->diff();
- std::cout << "\n";
- //t.print();
- //a.print();
- std::cin >>r ;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement