This commit is contained in:
Andrey Kassaev 2024-03-04 13:36:08 +04:00
commit bae67b429a
4 changed files with 115 additions and 0 deletions

2
.gitignore vendored Normal file
View File

@ -0,0 +1,2 @@
*/*
OOP*

26
Main.cpp Normal file
View File

@ -0,0 +1,26 @@
#pragma once
#include "Rectangle.h"
#include <iostream>
int main() {
Rectangle rectangle1(10, 5);
Rectangle rectangle2(7, 6);
/*Rectangle rectangle1(4, 6);
Rectangle rectangle2(2, 3);*/
//Usage of overloaded unary minus
Rectangle invertedRectangle = -rectangle1;
std::cout << "Inverted Rectangle:\n";
invertedRectangle.print();
//Usage of overloaded binary minus
double symDiffArea = rectangle1 - rectangle2;
std::cout << "Symmetric Difference Area = " << symDiffArea << "\n";
system("pause");
return 0;
};

65
Rectangle.cpp Normal file
View File

@ -0,0 +1,65 @@
#include "Rectangle.h"
double Rectangle::smallest(double x, double y) {
return (x < y) ? x : y;
}
double Rectangle::biggest(double x, double y) {
return (x > y) ? x : y;
}
double Rectangle::symmetricDifference(Rectangle& rectangle1, Rectangle& rectangle2) {
double differenceX = rectangle1.x - rectangle2.x;
double differenceY = rectangle1.y - rectangle2.y;
if (differenceX < 0 || differenceY < 0) {
double tmpRectangle1 = \
(biggest(rectangle1.x, rectangle2.x) - smallest(rectangle1.x, rectangle2.x)) * \
smallest(rectangle1.y, rectangle2.y);
double tmpRectangle2 = \
(biggest(rectangle1.y, rectangle2.y) - smallest(rectangle1.y, rectangle2.y)) * \
smallest(rectangle1.x, rectangle2.x);
double area = tmpRectangle1 + tmpRectangle2;
return area;
}
else {
//one rectangle is in inside another one
//biggest rect area - smallest rect area
double area = \
biggest(rectangle1.x, rectangle2.x) * biggest(rectangle1.y, rectangle2.y) - \
smallest(rectangle1.x, rectangle2.x) * smallest(rectangle1.y, rectangle2.y);
return area;
}
};
Rectangle::Rectangle(double x, double y) {
this->x = x;
this->y = y;
};
Rectangle::~Rectangle() {
};
Rectangle Rectangle::operator - () {
return Rectangle(
this->x * -1,
this->y * -1
);
};
double operator-(Rectangle& rectangle1, Rectangle& rectangle2) {
return Rectangle::symmetricDifference(rectangle1, rectangle2);
};
void Rectangle::print() {
std::cout << "X = " << this->x << "\n";
std::cout << "Y = " << this->y << "\n";
};

22
Rectangle.h Normal file
View File

@ -0,0 +1,22 @@
#pragma once
#include <iostream>
#include <math.h>
class Rectangle
{
private:
static double smallest(double x, double y);
static double biggest(double x, double y);
static double symmetricDifference(Rectangle& rectangle1, Rectangle& rectangle2);
public:
double x, y;
Rectangle(double x, double y);
~Rectangle();
void print();
Rectangle operator - ();
friend double operator-(Rectangle& rectangle1, Rectangle& rectangle2);
};