#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"; };