#include <iostream>
using namespace std;
class Point
{
public:
Point(int x, int y): itsX(x), itsY(y) {}
int GetX() const { return itsX; }
int GetY() const { return itsY; }
private:
int itsX;
int itsY;
};
class MyRectangle
{
public:
MyRectangle(int top, int left, int bottom, int right):
itsUpperLeft(left, top),
itsUpperRight(right, top),
itsLowerRight(right, bottom),
itsLowerLeft(left, bottom)
{
itsTop = top;
itsLeft = left;
itsBottom = bottom;
itsRight = right;
}
Point GetUpperLeft() const { return itsUpperLeft; }
Point GetLowerleft() const { return itsLowerLeft; }
Point GetUpperRight() const { return itsUpperRight; }
Point GetLowerRight() const { return itsLowerRight; }
int GetArea() const;
private:
Point itsUpperLeft;
Point itsUpperRight;
Point itsLowerLeft;
Point itsLowerRight;
int itsTop;
int itsLeft;
int itsBottom;
int itsRight;
};
int MyRectangle::GetArea() const
{
int Width = itsRight - itsLeft;
int Height = itsTop - itsBottom;
return ( Width * Height );
}
int main()
{
MyRectangle Rectangle( 100, 20, 50, 80 );
int Area = Rectangle.GetArea();
std::cout << "Area: " << Area << endl;
std::cout << "Upper Left X Coordinate: ";
std::cout << Rectangle.GetUpperLeft().GetX();
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY2xhc3MgUG9pbnQgCnsKcHVibGljOgoJUG9pbnQoaW50IHgsIGludCB5KTogaXRzWCh4KSwgaXRzWSh5KSB7fQoKCWludCBHZXRYKCkgY29uc3QgeyByZXR1cm4gaXRzWDsgfQoJaW50IEdldFkoKSBjb25zdCB7IHJldHVybiBpdHNZOyB9Cgpwcml2YXRlOgoJaW50IGl0c1g7CglpbnQgaXRzWTsKfTsKIApjbGFzcyBNeVJlY3RhbmdsZQp7CnB1YmxpYzoKCU15UmVjdGFuZ2xlKGludCB0b3AsIGludCBsZWZ0LCBpbnQgYm90dG9tLCBpbnQgcmlnaHQpOgoJCWl0c1VwcGVyTGVmdChsZWZ0LCB0b3ApLAoJCWl0c1VwcGVyUmlnaHQocmlnaHQsIHRvcCksCgkJaXRzTG93ZXJSaWdodChyaWdodCwgYm90dG9tKSwKCQlpdHNMb3dlckxlZnQobGVmdCwgYm90dG9tKQoJewoJCWl0c1RvcCAgICA9IHRvcDsKCQlpdHNMZWZ0ICAgPSBsZWZ0OwoJCWl0c0JvdHRvbSA9IGJvdHRvbTsKCQlpdHNSaWdodCAgPSByaWdodDsKCX0KICAgIAoJUG9pbnQgR2V0VXBwZXJMZWZ0KCkgY29uc3QgeyByZXR1cm4gaXRzVXBwZXJMZWZ0OyB9CglQb2ludCBHZXRMb3dlcmxlZnQoKSBjb25zdCB7IHJldHVybiBpdHNMb3dlckxlZnQ7IH0KCVBvaW50IEdldFVwcGVyUmlnaHQoKSBjb25zdCB7IHJldHVybiBpdHNVcHBlclJpZ2h0OyB9CglQb2ludCBHZXRMb3dlclJpZ2h0KCkgY29uc3QgeyByZXR1cm4gaXRzTG93ZXJSaWdodDsgfQoKCWludCBHZXRBcmVhKCkgY29uc3Q7Cgpwcml2YXRlOgoJUG9pbnQgaXRzVXBwZXJMZWZ0OwoJUG9pbnQgaXRzVXBwZXJSaWdodDsKCVBvaW50IGl0c0xvd2VyTGVmdDsKCVBvaW50IGl0c0xvd2VyUmlnaHQ7CgkKCWludCBpdHNUb3A7CglpbnQgaXRzTGVmdDsKCWludCBpdHNCb3R0b207CglpbnQgaXRzUmlnaHQ7Cn07CgppbnQgTXlSZWN0YW5nbGU6OkdldEFyZWEoKSBjb25zdAp7CglpbnQgV2lkdGggPSBpdHNSaWdodCAtIGl0c0xlZnQ7CglpbnQgSGVpZ2h0ID0gaXRzVG9wIC0gaXRzQm90dG9tOwoJcmV0dXJuICggV2lkdGggKiBIZWlnaHQgKTsKfQoKaW50IG1haW4oKQp7CglNeVJlY3RhbmdsZSBSZWN0YW5nbGUoIDEwMCwgMjAsIDUwLCA4MCApOwoJCglpbnQgQXJlYSA9IFJlY3RhbmdsZS5HZXRBcmVhKCk7CgkKCXN0ZDo6Y291dCA8PCAiQXJlYTogIiA8PCBBcmVhIDw8IGVuZGw7CglzdGQ6OmNvdXQgPDwgIlVwcGVyIExlZnQgWCBDb29yZGluYXRlOiAiOwoJc3RkOjpjb3V0IDw8IFJlY3RhbmdsZS5HZXRVcHBlckxlZnQoKS5HZXRYKCk7Cn0=