#include <iostream>
using namespace std;
class InchSize {
public:
InchSize(int wholeInches = 0, int sixteenths = 0);
void Print() const;
InchSize operator+(InchSize rhs);
private:
int inches;
int sixteenths;
};
InchSize InchSize::operator+(InchSize rhs) {
InchSize totalSize;
totalSize.inches = inches + rhs.inches;
totalSize.sixteenths = sixteenths + rhs.sixteenths;
// If sixteenths is greater than an inch, carry 1 to inches.
if (totalSize.sixteenths >= 16) {
totalSize.inches += 1;
totalSize.sixteenths -= 16;
}
return totalSize;
}
InchSize::InchSize(int wholeInches, int sixteenthsOfInch) {
inches = wholeInches;
sixteenths = sixteenthsOfInch;
}
void InchSize::Print() const {
cout << inches << " " << sixteenths << "/16 inches" << endl;
}
int main() {
InchSize size1(4, 10);
InchSize size2(8, 12);
InchSize sumSize;
sumSize = size1 + size2;
sumSize.Print();
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY2xhc3MgSW5jaFNpemUgewogICBwdWJsaWM6CiAgICAgIEluY2hTaXplKGludCB3aG9sZUluY2hlcyA9IDAsIGludCBzaXh0ZWVudGhzID0gMCk7CiAgICAgIHZvaWQgUHJpbnQoKSBjb25zdDsKICAgICAgSW5jaFNpemUgb3BlcmF0b3IrKEluY2hTaXplIHJocyk7CiAgIHByaXZhdGU6CiAgICAgIGludCBpbmNoZXM7CiAgICAgIGludCBzaXh0ZWVudGhzOwp9OwoKSW5jaFNpemUgSW5jaFNpemU6Om9wZXJhdG9yKyhJbmNoU2l6ZSByaHMpIHsKICAgSW5jaFNpemUgdG90YWxTaXplOwoKICAgdG90YWxTaXplLmluY2hlcyA9IGluY2hlcyArIHJocy5pbmNoZXM7CiAgIHRvdGFsU2l6ZS5zaXh0ZWVudGhzID0gc2l4dGVlbnRocyArIHJocy5zaXh0ZWVudGhzOwoKICAgLy8gSWYgc2l4dGVlbnRocyBpcyBncmVhdGVyIHRoYW4gYW4gaW5jaCwgY2FycnkgMSB0byBpbmNoZXMuCiAgIGlmICh0b3RhbFNpemUuc2l4dGVlbnRocyA+PSAxNikgewogICAgICB0b3RhbFNpemUuaW5jaGVzICs9IDE7CiAgICAgIHRvdGFsU2l6ZS5zaXh0ZWVudGhzIC09IDE2OwogICB9CgogICByZXR1cm4gdG90YWxTaXplOwp9CgpJbmNoU2l6ZTo6SW5jaFNpemUoaW50IHdob2xlSW5jaGVzLCBpbnQgc2l4dGVlbnRoc09mSW5jaCkgewogICBpbmNoZXMgPSB3aG9sZUluY2hlczsKICAgc2l4dGVlbnRocyA9IHNpeHRlZW50aHNPZkluY2g7Cn0KCnZvaWQgSW5jaFNpemU6OlByaW50KCkgY29uc3QgewogICBjb3V0IDw8IGluY2hlcyA8PCAiICIgPDwgc2l4dGVlbnRocyA8PCAiLzE2IGluY2hlcyIgPDwgZW5kbDsKfQoKaW50IG1haW4oKSB7CiAgIEluY2hTaXplIHNpemUxKDQsIDEwKTsKICAgSW5jaFNpemUgc2l6ZTIoOCwgMTIpOwogICBJbmNoU2l6ZSBzdW1TaXplOwoKICAgc3VtU2l6ZSA9IHNpemUxICsgc2l6ZTI7CgogICBzdW1TaXplLlByaW50KCk7CgogICByZXR1cm4gMDsKfQ==