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