Website Summary Files Commits Branches @commit @diff @stats
path: root / Polymorphism / MathExpression / main.hpp
diff options
context:
space:
mode:
1 files changed, 25 insertions, 2 deletions
-rw-r--r--Polymorphism/MathExpression/main.hpp27
diff --git a/Polymorphism/MathExpression/main.hpp b/Polymorphism/MathExpression/main.hpp
index a309f44..5fa3f8f 100644
--- a/Polymorphism/MathExpression/main.hpp
+++ b/Polymorphism/MathExpression/main.hpp
@@ -1,6 +1,9 @@
#include "Expression.hpp"
+#include "Num.hpp"
+#include "Operation.hpp"
+bool AreTheSame(Expression* left, Expression* right);
int main()
-{
+{
Expression* l = new Num(3);
Expression* r = new Num(7);
Expression* final1 = new Operation(l, '+', r);
@@ -17,4 +20,24 @@ int main()
-} \ No newline at end of file
+}
+bool AreTheSame(Expression* left, Expression* right)
+{
+ if (left->getType() != right->getType())//гледаме дали не са от раличен тип (едното да е опрация,другото да е число)
+ return false; //очевидно са различни тогава
+
+ if (left->getType() == 1) //ако двете са числа
+ {
+ Num* l = (Num*)left; //Конвертираме пойнтерите
+ Num* r = (Num*)right;
+ return l->getNum() == r->getNum(); //сравняваме стойностите
+ }
+ else //Ако двете са операции
+ {
+ Operation* l = (Operation*)left;
+ Operation* r = (Operation*)right;
+ return (l->op == l->op) && AreTheSame(l->left, r->left) && AreTheSame(l->right, r->right);
+ //гледаме дали знаците на опрациите съвпадат, дали левите страни съвпадат и дали десните страни съвпадат.
+ }
+
+}