From 0fa3378234bf4796677f7dcca6488c7a16632c17 Mon Sep 17 00:00:00 2001 From: Angeld55 Date: Tue, 24 Sep 2019 00:14:03 +0300 Subject: Add files via upload --- Polymorphism/MathExpression/Expression.hpp | 2 ++ Polymorphism/MathExpression/Num.hpp | 7 ++++++- Polymorphism/MathExpression/Operation.hpp | 2 ++ Polymorphism/MathExpression/main.hpp | 27 +++++++++++++++++++++++++-- 4 files changed, 35 insertions(+), 3 deletions(-) (limited to 'Polymorphism/MathExpression') diff --git a/Polymorphism/MathExpression/Expression.hpp b/Polymorphism/MathExpression/Expression.hpp index dd344d8..4f09790 100644 --- a/Polymorphism/MathExpression/Expression.hpp +++ b/Polymorphism/MathExpression/Expression.hpp @@ -1,3 +1,5 @@ +#pragma once + #include class Expression diff --git a/Polymorphism/MathExpression/Num.hpp b/Polymorphism/MathExpression/Num.hpp index d2da4ae..91e1492 100644 --- a/Polymorphism/MathExpression/Num.hpp +++ b/Polymorphism/MathExpression/Num.hpp @@ -1,3 +1,5 @@ +#pragma once + #include "Expression.hpp" class Num : public Expression { @@ -16,6 +18,9 @@ public: { return number; } - + int getNum() + { + return number; + } }; \ No newline at end of file diff --git a/Polymorphism/MathExpression/Operation.hpp b/Polymorphism/MathExpression/Operation.hpp index cfa9534..ade8404 100644 --- a/Polymorphism/MathExpression/Operation.hpp +++ b/Polymorphism/MathExpression/Operation.hpp @@ -1,3 +1,5 @@ +#pragma once +#include "Expression.hpp" class Operation : public Expression { 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); + //гледаме дали знаците на опрациите съвпадат, дали левите страни съвпадат и дали десните страни съвпадат. + } + +} -- cgit v1.3.1-23-gd82d