init
This commit is contained in:
commit
bae67b429a
|
|
@ -0,0 +1,2 @@
|
|||
*/*
|
||||
OOP*
|
||||
|
|
@ -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;
|
||||
};
|
||||
|
|
@ -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";
|
||||
};
|
||||
|
|
@ -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);
|
||||
|
||||
};
|
||||
Loading…
Reference in New Issue