diff options
start from scratch
5 files changed, 0 insertions, 141 deletions
| -rw-r--r-- | Polymorphism/MathExpression/Expression.hpp | 16 | ||||
| -rw-r--r-- | Polymorphism/MathExpression/Num.hpp | 26 | ||||
| -rw-r--r-- | Polymorphism/MathExpression/Operation.hpp | 48 | ||||
| -rw-r--r-- | Polymorphism/MathExpression/README.md | 8 | ||||
| -rw-r--r-- | Polymorphism/MathExpression/main.hpp | 43 |
diff --git a/Polymorphism/MathExpression/Expression.hpp b/Polymorphism/MathExpression/Expression.hpp deleted file mode 100644 index 4f09790..0000000 --- a/Polymorphism/MathExpression/Expression.hpp +++ /dev/null @@ -1,16 +0,0 @@ -#pragma once
-
-#include <iostream>
-
-class Expression
-{
-public:
- virtual void Print() = 0;
- virtual int Evaluate() = 0;
- virtual ~Expression(){}
- int getType(){ return type; }
-protected:
- int type; //Ако обектът е NUM, ще пазим тук 1, а ако обектът е Операция, ще пазим тук 2.
-};
-
-
diff --git a/Polymorphism/MathExpression/Num.hpp b/Polymorphism/MathExpression/Num.hpp deleted file mode 100644 index 91e1492..0000000 --- a/Polymorphism/MathExpression/Num.hpp +++ /dev/null @@ -1,26 +0,0 @@ -#pragma once
-
-#include "Expression.hpp"
-class Num : public Expression
-{
- int number;
-public:
- Num(int number)
- {
- this->number = number;
- type = 1;
- }
- void Print()
- {
- std::cout << number;
- }
- int Evaluate()
- {
- return number;
- }
- int getNum()
- {
- return number;
- }
-
-};
\ No newline at end of file diff --git a/Polymorphism/MathExpression/Operation.hpp b/Polymorphism/MathExpression/Operation.hpp deleted file mode 100644 index ade8404..0000000 --- a/Polymorphism/MathExpression/Operation.hpp +++ /dev/null @@ -1,48 +0,0 @@ -#pragma once
-#include "Expression.hpp"
-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 diff --git a/Polymorphism/MathExpression/README.md b/Polymorphism/MathExpression/README.md deleted file mode 100644 index 4472fb4..0000000 --- a/Polymorphism/MathExpression/README.md +++ /dev/null @@ -1,8 +0,0 @@ -# Hierarchy - - - - -# How does an object looks like - - 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);
- //гледаме дали знаците на опрациите съвпадат, дали левите страни съвпадат и дали десните страни съвпадат.
- }
-
-}
|
