Algorithm


Problem Name: Box It!

Problem Link: https://www.hackerrank.com/challenges/box-it/problem?isFullScreen=true

In this HackerRank Functions in C++ programming problem solution,

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 parameterized constructor Box(int length, int breadth, int height) should initialize Box's l, b and h to length, breadth and height.

The copy constructor Box (Box B) should set l, b and h to B's l, b and h, 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 Box. Box A < Box B if:

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

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 <= 10**5

Two boxes being compared using the operator will not have all three dimensions equal.

 

 

Code Examples

#1 Code Example with C++ Programming

Code - C++ Programming


#include<bits/stdc++.h>
using namespace std;

class Box{
    private:
        int l, b, h;
    public:
        Box(int a = 0, int bb = 0, int c = 0){
            l = a;
            b = bb;
            h = c;
        }
        int getLength(){
            return l;
        }
        int getBreadth(){
            return b;
        }
        int getHeight(){
            return h;
        }
        long long CalculateVolume(){
            return (long long)l * b * h;
        }

        bool operator < (Box& B){                         //Overload operator < as specified
            if((l < B.l) || (b < B.b && l == B.l) || (l == B.l && b == B.b && h < B.h))
                return true;
            else
                return false;

        }
        friend ostream& operator<<(ostream& out, Box& A){
            out << A.l << " " << A.b << " " << A.h;
            return out;
        }
};

void check2()
{
	int n;
	cin >> n;
	Box temp;
	for(int i = 0; i  <  n; i++){
        int type;
		cin >> type;
		if(type == 1){
			cout << temp << endl;
		}
		if(type == 2){
			int l,b,h;
			cin >> l >> b >> h;
			Box NewBox(l,b,h);
			temp = NewBox;
			cout << temp << endl;
		}
		if(type == 3){
			int l,b,h;
			cin >> l >> b >> h;
			Box NewBox(l,b,h);
			if(NewBox  <  temp){
				cout << "Lesser\n";
			}
			else{
				cout << "Greater\n";
			}
		}
		if(type == 4){
			cout << temp.CalculateVolume() << endl;
		}
		if(type == 5){
			Box NewBox(temp);
			cout << NewBox << endl;
		}

	}
}

int main(void)
{
    check2(>;
}
Copy The Code & Try With Live Editor
Advertisements

Demonstration


Previous
[Solved] Classes and Objects in C++ solution in Hackerrank - Hacerrank solution C++
Next
[Solved] Vector-Sort in C++ solution in Hackerrank - Hacerrank solution C++