Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

please to help me to deal with those problems #include #include using namespace std; class Pet { public: Pet(string nm, int initialHealth); void eat(int amt);

please to help me to deal with those problems

#include

#include

using namespace std;

class Pet

{

public:

Pet(string nm, int initialHealth);

void eat(int amt);

void play();

string name() const;

bool alive() const;

private:

string m_name;

int m_health;

int health() const;

};

// Initialize the state of the pet

Pet::Pet(string nm, int initialHealth) {

m_name = nm;

m_health = initialHealth;

}

void Pet::eat(int amt)

{

m_health += amt;

// TODO: Increase the pet's health by the amount

}

void Pet::play()

{

m_health--;

// TODO: Decrease pet's health by 1 for the energy consumed

}

string Pet::name() const

{

//TODO: Return the pet's name. Delete the following line and

//replace it with the correct code.

return m_name; // This implementation compiles, but is incorrect

}

int Pet::health() const

{

//TODO: Return the pet's current health level. Delete the

//following line and replace it with the correct code.

return m_health; // This implementation compiles, but is incorrect

}

bool Pet::alive() const

{

//TODO: Return whether pet is alive. (A pet is alive if

//its health is greater than zero.) Delete the following

//line and replace it with the correct code.

if (m_health > 0)

return true;

else

return false;// This implementation compiles, but is incorrect

}

void reportStatus(const Pet* p)

{

cout << p->name() << " has health level " << p->health();

if (!p->alive()) {

cout << ", so has died";

}

cout << endl;

}

void careFor(Pet* p, int d)

{

if (!p->alive())

{

cout << p->name() << " is still dead" << endl;

return;

}

// Every third day, you forget to feed your pet

if (d % 3 == 0) {

cout << "You forgot to feed " << p->name() << endl;

}

else {

p->eat(1); // Feed the pet one unit of food

cout << "You fed " << p->name() << endl;

}

p->play();

reportStatus(p);

}

int main()

{

Pet* myPets[2];

myPets[0] = new Pet("Fluffy", 2);

myPets[1] = new Pet("Frisky", 4);

for (int day = 1; day <= 9; day++)

{

cout << "======= Day " << day << endl;

for (int k = 0; k < 2; k++) {

careFor(myPets[k], day);

}

}

cout << "=======" << endl;

for (int k = 0; k < 2; k++)

{

if (myPets[k]->alive()) {

cout << "Animal Control has come to rescue " << myPets[k]->name() << endl;

}

delete myPets[k];

}

}

Comment out the entire implementation of Pet::eat, all the way from the void Pet::eat(int amt) to its close curly brace. Why do you get the resulting build error?

In main, replace myPets[0] = new Pet("Fluffy", 2); with myPets[0] = new Pet("Fluffy"); or myPets[0] = new Pet;, Why do you get the resulting compilation errors?

Try removing the const from the implementation, but not the declaration of the alive member function. What happens? Why?

Try removing the const from both the declaration and the implementation of the alive member function. Explain why the use of that function doesn't compile in reportStatus, but does compile in careFor and main.

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image_2

Step: 3

blur-text-image_3

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

Database Processing

Authors: David J. Auer David M. Kroenke

13th Edition

B01366W6DS, 978-0133058352

More Books

Students also viewed these Databases questions