Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

I only finish half part of the member functions for the class but I don\'t know

ID: 3568301 • Letter: I

Question

I only finish half part of the member functions for the class but I don't know how to write some of member function

#include <iostream>
using namespace::std;

class Coins
{
public:
   // Constructors
   Coins(void);
   Coins(int q, int d, int n, int p);

   // Mutator Functions
   void setPennies(int);
   void setNickels(int);
   void setDimes(int);
   void setQuarters(int);

   // Accessor Functions
   int getPennies(void);
   int getNickels(void);
   int getDimes(void);
   int getQuarters(void);

   // Other Functions
   void advanceOnePenny();
   // increase the pennies amount by 1
   // NOTE: you may have to advance the nickels
   // you may have to advance the dimes
   // you may have to advance the quarters
   // in other words, minimize the number of coins

   void output(ostream &);
   void zeroOut(void); //set quarters, dimes, nickels & pennies to 0

private:
   int quarters;
   int dimes;
   int nickels;
   int pennies;
};

void main()
{
   Coins stackOfChange(0, 1, 1, 3);

   for (int i = 1; i <= 33; i++)
   {
       stackOfChange.advanceOnePenny();
       stackOfChange.output(cout);
   }

   stackOfChange.zeroOut();
   stackOfChange.output(cout);

   stackOfChange.setQuarters(3);
   stackOfChange.setDimes(1);
   stackOfChange.setNickels(1);
   stackOfChange.setPennies(2);

   cout << stackOfChange.getQuarters() << ' '
       << stackOfChange.getDimes() << ' '
       << stackOfChange.getNickels() << ' '
       << stackOfChange.getPennies() << endl;

   return;
}

// WRITE THE coins FUNCTIONS BELOW
Coins::Coins(void)
{
}
Coins::Coins(int q, int d, int n, int p)
{
   quarters = q;
   dimes = d;
   nickels = n;
   pennies = p;

}

void Coins::setPennies(int p)
{
   pennies = p;
   return;
}


void Coins::setNickels(int n)
{
   nickels = n;
   return;
}
void Coins::setDimes(int d)
{
   dimes = d;
   return;
}
void Coins::setQuarters(int q)
{
   quarters = q;
   return;
}

int Coins::getPennies(void)
{
   return pennies;
}
int Coins::getNickels(void)
{
   return nickels;
}
int Coins::getDimes(void)
{
   return dimes;
}
int Coins::getQuarters(void)
{
   return quarters;
}

void Coins::advanceOnePenny()
{
   pennies++;
// increase the pennies amount by 1
// NOTE: you may have to advance the nickels
// you may have to advance the dimes
// you may have to advance the quarters
// in other words, minimize the number of coins

}

void Coins::output(ostream &)
{

}
void Coins::zeroOut(void)
{
   pennies = 0;
   nickels = 0;
   dimes = 0;
   quarters = 0;
}//set quarters, dimes, nickels & pennies to 0

Explanation / Answer

Just Changed Two functions:

1) In addonepenny function our objective is to minimize Number of coins

so, This is our new addonepenny function


void Coins::advanceOnePenny()
{
   pennies++;
   if (pennies == 5){
       nickels++;
       pennies = 0;
   }
   if (nickels == 2){
       dimes++;
       nickels = 0;
   }
   if (dimes == 2 && nickels == 1){
       dimes = 0;
       nickels = 0;
       quarters++;
   }
}

2) Second one is to output the coins list


void Coins::output(ostream &out)
{
   out << "Quarters: " << quarters << endl;
   out << "Dimes: " << dimes << endl;
   out << "Nickels: " << nickels << endl;
   out << "Pennies: " << pennies << endl << endl;
}

______________________________________________________________________________________

______________________________________________________________________________________

Here is the Total Program

#include <iostream>

using namespace::std;

class Coins
{
public:
   // Constructors
   Coins(void);
   Coins(int q, int d, int n, int p);

   // Mutator Functions
   void setPennies(int);
   void setNickels(int);
   void setDimes(int);
   void setQuarters(int);

   // Accessor Functions
   int getPennies(void);
   int getNickels(void);
   int getDimes(void);
   int getQuarters(void);

   // Other Functions
   void advanceOnePenny();
   // increase the pennies amount by 1
   // NOTE: you may have to advance the nickels
   // you may have to advance the dimes
   // you may have to advance the quarters
   // in other words, minimize the number of coins

   void output(ostream &);
   void zeroOut(void); //set quarters, dimes, nickels & pennies to 0

private:
   int quarters;
   int dimes;
   int nickels;
   int pennies;
};

void main()
{
   Coins stackOfChange(0, 1, 1, 3);

   for (int i = 1; i <= 33; i++)
   {
       stackOfChange.advanceOnePenny();
       stackOfChange.output(cout);
   }

   stackOfChange.zeroOut();
   stackOfChange.output(cout);

   stackOfChange.setQuarters(3);
   stackOfChange.setDimes(1);
   stackOfChange.setNickels(1);
   stackOfChange.setPennies(2);

   cout << stackOfChange.getQuarters() << ' '
       << stackOfChange.getDimes() << ' '
       << stackOfChange.getNickels() << ' '
       << stackOfChange.getPennies() << endl;

   return;
}

// WRITE THE coins FUNCTIONS BELOW
Coins::Coins(void)
{
}

Coins::Coins(int q, int d, int n, int p)
{
   quarters = q;
   dimes = d;
   nickels = n;
   pennies = p;
}

void Coins::setPennies(int p)
{
   pennies = p;
   return;
}


void Coins::setNickels(int n)
{
   nickels = n;
   return;
}
void Coins::setDimes(int d)
{
   dimes = d;
   return;
}
void Coins::setQuarters(int q)
{
   quarters = q;
   return;
}

int Coins::getPennies(void)
{
   return pennies;
}
int Coins::getNickels(void)
{
   return nickels;
}
int Coins::getDimes(void)
{
   return dimes;
}
int Coins::getQuarters(void)
{
   return quarters;
}

void Coins::advanceOnePenny()
{
   pennies++;
   if (pennies == 5){
       nickels++;
       pennies = 0;
   }
   if (nickels == 2){
       dimes++;
       nickels = 0;
   }
   if (dimes == 2 && nickels == 1){
       dimes = 0;
       nickels = 0;
       quarters++;
   }
}

void Coins::output(ostream &out)
{
   out << "Quarters: " << quarters << endl;
   out << "Dimes: " << dimes << endl;
   out << "Nickels: " << nickels << endl;
   out << "Pennies: " << pennies << endl << endl;
}

void Coins::zeroOut(void)
{
   pennies = 0;
   nickels = 0;
   dimes = 0;
   quarters = 0;
}
//set quarters, dimes, nickels & pennies to 0