diff options
1 files changed, 0 insertions, 43 deletions
| -rw-r--r-- | Polymorphism/MathExpression/main.hpp | 43 |
diff --git a/Polymorphism/MathExpression/main.hpp b/Polymorphism/MathExpression/main.hpp deleted file mode 100644 index 5fa3f8f..0000000 --- a/Polymorphism/MathExpression/main.hpp +++ /dev/null @@ -1,43 +0,0 @@ -#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);
-
- Expression* l2 = new Num(3);
- Expression* r2 = new Num(7);
- Expression* final2 = new Operation(l2, '+', r2);
-
- std::cout << final1->Evaluate();
-
- std::cout << AreTheSame(final1, final2);
-
- delete final1, final2; //Винаги трием най-големите 'Expression-и'. Те се грижат за по-малките от които са образувани.
-
-
-
-}
-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);
- //гледаме дали знаците на опрациите съвпадат, дали левите страни съвпадат и дали десните страни съвпадат.
- }
-
-}
|
