From d2422da2c1b2fcf75a3212eb36e94a718a39c0a5 Mon Sep 17 00:00:00 2001 From: Angeld55 Date: Fri, 20 Sep 2019 16:02:36 +0300 Subject: Add files via upload --- Polymorphism/MathExpression/Operation.hpp | 46 +++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 Polymorphism/MathExpression/Operation.hpp (limited to 'Polymorphism/MathExpression/Operation.hpp') diff --git a/Polymorphism/MathExpression/Operation.hpp b/Polymorphism/MathExpression/Operation.hpp new file mode 100644 index 0000000..cfa9534 --- /dev/null +++ b/Polymorphism/MathExpression/Operation.hpp @@ -0,0 +1,46 @@ +class Operation : public Expression +{ + +public: + Expression* left; + char op; + Expression* right; + Operation(Expression* left, char ch, Expression* right) + { + + this->left = left; + op = ch; + this->right = right; + type = 2; + + } + void Print() + { + std::cout << '('; + left->Print(); + std::cout << op; + right->Print(); + std::cout << ')'; + } + int Evaluate() + { + int result = left->Evaluate(); + int value2 = right->Evaluate(); + + if (op == '+') + result += value2; + else if (op == '*') + result *= value2; + else + return 0; //Invalid operation + return result; + } + ~Operation() + { + + delete left; + delete right; + op = '\0'; + } + +}; \ No newline at end of file -- cgit v1.3.1-23-gd82d