#include <iostream>
using namespace std;
class Rectangle {
public:
void SetSize(int heightVal, int widthVal) {
height = heightVal;
width = widthVal;
}
int GetArea() const;
int GetPerimeter() const;
private:
int height;
int width;
};
int Rectangle::GetArea() const {
return height * width;
}
int Rectangle::GetPerimeter() const {
return (height * 2) + (width * 2);
}
int main() {
Rectangle myRectangle;
myRectangle.SetSize(1, 1);
if (myRectangle.GetArea() != 1) {
cout << "FAILED GetArea() for 1, 1" << endl;
}
if (myRectangle.GetPerimeter() != 3) {
cout << "FAILED GetPerimeter() for 1, 1" << endl;
}
myRectangle.SetSize(2, 3);
if (myRectangle.GetArea() != 8) {
cout << "FAILED GetArea() for 2, 3" << endl;
}
if (myRectangle.GetPerimeter() != 10) {
cout << "FAILED GetPerimeter() for 2, 3" << endl;
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY2xhc3MgUmVjdGFuZ2xlIHsKcHVibGljOgogICB2b2lkIFNldFNpemUoaW50IGhlaWdodFZhbCwgaW50IHdpZHRoVmFsKSB7CiAgICAgIGhlaWdodCA9IGhlaWdodFZhbDsKICAgICAgd2lkdGggPSB3aWR0aFZhbDsKICAgfQogICBpbnQgR2V0QXJlYSgpIGNvbnN0OwogICBpbnQgR2V0UGVyaW1ldGVyKCkgY29uc3Q7Cgpwcml2YXRlOgogICBpbnQgaGVpZ2h0OwogICBpbnQgd2lkdGg7Cn07CgppbnQgUmVjdGFuZ2xlOjpHZXRBcmVhKCkgY29uc3QgewogICByZXR1cm4gaGVpZ2h0ICogd2lkdGg7Cn0KCmludCBSZWN0YW5nbGU6OkdldFBlcmltZXRlcigpIGNvbnN0IHsKICAgcmV0dXJuIChoZWlnaHQgKiAyKSArICh3aWR0aCAqIDIpOwp9CgppbnQgbWFpbigpIHsKICAgUmVjdGFuZ2xlIG15UmVjdGFuZ2xlOwoKICAgbXlSZWN0YW5nbGUuU2V0U2l6ZSgxLCAxKTsKICAgaWYgKG15UmVjdGFuZ2xlLkdldEFyZWEoKSAhPSAxKSB7CiAgICAgIGNvdXQgPDwgIkZBSUxFRCBHZXRBcmVhKCkgZm9yIDEsIDEiIDw8IGVuZGw7CiAgIH0KICAgaWYgKG15UmVjdGFuZ2xlLkdldFBlcmltZXRlcigpICE9IDMpIHsKICAgICAgY291dCA8PCAiRkFJTEVEIEdldFBlcmltZXRlcigpIGZvciAxLCAxIiA8PCBlbmRsOwogICB9CgogICBteVJlY3RhbmdsZS5TZXRTaXplKDIsIDMpOwogICBpZiAobXlSZWN0YW5nbGUuR2V0QXJlYSgpICE9IDgpIHsKICAgICAgY291dCA8PCAiRkFJTEVEIEdldEFyZWEoKSBmb3IgMiwgMyIgPDwgZW5kbDsKICAgfQogICBpZiAobXlSZWN0YW5nbGUuR2V0UGVyaW1ldGVyKCkgIT0gMTApIHsKICAgICAgY291dCA8PCAiRkFJTEVEIEdldFBlcmltZXRlcigpIGZvciAyLCAzIiA8PCBlbmRsOwogICB9CgogICByZXR1cm4gMDsKfQ==