diff options
Add files via upload
1 files changed, 46 insertions, 0 deletions
| -rw-r--r-- | Polymorphism/MathExpression/Operation.hpp | 46 |
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 |
