From 0218c678e13e1cb94a352c91733cea68467dc566 Mon Sep 17 00:00:00 2001 From: Angeld55 Date: Sun, 14 Feb 2021 23:06:35 +0200 Subject: start from scratch --- Polymorphism/MathExpression/Expression.hpp | 16 ---------- Polymorphism/MathExpression/Num.hpp | 26 ---------------- Polymorphism/MathExpression/Operation.hpp | 48 ------------------------------ Polymorphism/MathExpression/README.md | 8 ----- Polymorphism/MathExpression/main.hpp | 43 -------------------------- 5 files changed, 141 deletions(-) delete mode 100644 Polymorphism/MathExpression/Expression.hpp delete mode 100644 Polymorphism/MathExpression/Num.hpp delete mode 100644 Polymorphism/MathExpression/Operation.hpp delete mode 100644 Polymorphism/MathExpression/README.md delete mode 100644 Polymorphism/MathExpression/main.hpp (limited to 'Polymorphism/MathExpression') 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 - -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 - - -![enter image description here](https://i.ibb.co/ZHnWnKG/1-hierarchy.jpg "Hierarchy") - -# How does an object looks like - -![enter image description here](https://i.ibb.co/KFfsf7S/2-Example-Expr.jpg "Example") 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); - //гледаме дали знаците на опрациите съвпадат, дали левите страни съвпадат и дали десните страни съвпадат. - } - -} -- cgit v1.3.1-23-gd82d