Box It!

Design a class named Box whose dimensions are integers and private to the class. The dimensions are labelled: length l, breadth b, and height h.

The default constructor of the class should initialize l, b, and h to 0.

The parameterized constructor Box(int length, int breadth, int height) should initialize Box‘s  and  to length, breadth and height.

The copy constructor BoxBox ) should set  and  to ‘s  and , respectively.

Apart from the above, the class should have  functions:

  • int getLength() – Return box’s length
  • int getBreadth() – Return box’s breadth
  • int getHeight() – Return box’s height
  • long long CalculateVolume() – Return the volume of the box

Overload the operator  for the class BoxBox   Box  if:

  1.  A.l < B.l
  2.  B.b < B.b and A.l == B.b
  3. A.h < B.h and A.b == B.b and A.l == B.b

Overload operator << for the class Box().
If B is an object of class Box:

cout << B should print B.l, B.b and B.h on a single line separated by spaces.

For example,

Box b1; // Should set b1.l = b1.b = b1.h = 0;
Box b2(2, 3, 4); // Should set b1.l = 2, b1.b = 3, b1.h = 4;
b2.getLength(); // Should return 2
b2.getBreadth(); // Should return 3
b2.getheight(); // Should return 4
b2.CalculateVolume(); // Should return 24
bool x = (b1 < b2); // Should return true based on the conditions given
cout<<b2; // Should print 2 3 4 in order.

Constraints

0 ≤ l, b, h ≤ 105
Two boxes being compared using the < operator will not have all three dimensions equal.

Solution Implementation


class Box {
 private:
  int length, breadth, height;
 public:
  Box() {
    length = 0;
    breadth = 0;
    height = 0;
  }
  Box(int l, int b, int h) {
    length = l;
    breadth = b;
    height = h;
  }
  Box(const Box &B) {
    length = B.length;
    breadth = B.breadth;
    height = B.height;
  }
  int getLength() {
    return length;
  }
  int getBreadth() {
    return breadth;
  }
  int getHeight() {
    return height;
  }
  long long CalculateVolume() {
    return (long long)(breadth) * length * height;
  }
  bool operator<(Box &B) {
    if (length < B.length) {
      return true;
    } else if (length == B.length) {
      if (breadth < B.breadth) {
        return true;
      } else if (breadth == B.breadth) {
        if (height < B.height) {
          return true;
        }
      }
    }

    return false;
  }
};
ostream &operator<<(ostream &out, Box &B) {
  out << B.getLength() << " " << B.getBreadth() << " " << B.getHeight();
  return out;
};
Copied!

Leave a Reply

Your email address will not be published. Required fields are marked *