In this HackerRank Accessing Inherited functions problem in c++ programming language, You are given a class D and You need to modify the class D and implement the function update_val which sets D’s val to new_val by manipulating the value by only calling the func defined in classes A, B, and C.
HackerRank Accessing Inherited functions problem solution in c++ programming.
#include<iostream>
using namespace std;
class A
{
public:
A(){
callA = 0;
}
private:
int callA;
void inc(){
callA++;
}
protected:
void func(int & a)
{
a = a * 2;
inc();
}
public:
int getA(){
return callA;
}
};
class B
{
public:
B(){
callB = 0;
}
private:
int callB;
void inc(){
callB++;
}
protected:
void func(int & a)
{
a = a * 3;
inc();
}
public:
int getB(){
return callB;
}
};
class C
{
public:
C(){
callC = 0;
}
private:
int callC;
void inc(){
callC++;
}
protected:
void func(int & a)
{
a = a * 5;
inc();
}
public:
int getC(){
return callC;
}
};
class D : public A, public B, public C
{
int val;
public:
D()
{
val = 1;
}
void update_val(int new_val)
{
while(new_val%2 == 0) {
A::func(val);
new_val /= 2;
}
while(new_val%3 == 0) {
B::func(val);
new_val /= 3;
}
while(new_val%5 == 0) {
C::func(val);
new_val /= 5;
}
}
//For Checking Purpose
void check(int); //Do not delete this line.
};
void D::check(int new_val)
{
update_val(new_val);
cout << "Value = " << val << endl << "A's func called " << getA() << " times " << endl << "B's func called " << getB() << " times" << endl << "C's func called " << getC() << " times" << endl;
}
int main()
{
D d;
int new_val;
cin >> new_val;
d.check(new_val);
}