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

Exercise 1 (Constructors) There are three constructors for the Money class that

ID: 3670268 • Letter: E

Question

Exercise 1 (Constructors) There are three constructors for the Money class that you will implement: one that has zero input parameters, one that has two and one has Money() // Initializes a money object with zero money Money (unsigned int d, unsigned int pennies) // Initializes a money object with d dollars and pennies cents // The pennies input could have value that exceeds a dollar // How you store the pennies is not specified. The number of dollars is determined // by the d input onljy Money (unsigned int dd, unsigned int q, unsigned int d, unsigned int n, unsigned int p) // Initializes a money object with exactly dd dollars, q quarters, d dimes, // n nickels and p pennies // Immediately after calling the constructors, getDollars should return dd, // getQuarters should return q, getDimes should return d, // getNickels should return n, and getPennies should return p

Explanation / Answer

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

class Money{
   public:
       unsigned int numDollars;
       unsigned int numQuarters;
       unsigned int numDimes;
       unsigned int numNickels;
       unsigned int numPennies;
       Money(){
           numDollars = 0;
           numQuarters = 0;
           numDimes = 0;
           numNickels = 0;
           numPennies = 0;
       }
       Money(unsigned int d, unsigned int p){
           numDollars = d;
           numQuarters = 0;
           numDimes = 0;
           numNickels = 0;
           numPennies = p;
       }
       Money(unsigned int dd, unsigned int q, unsigned int d, unsigned int n, unsigned int p){
           numDollars = dd;
           numQuarters = q;
           numDimes = d;
           numNickels = n;
           numPennies = p;
       }
       unsigned int getCents(){
           return (25*numQuarters + 10*numDimes + 5*numNickels + numPennies);
       }
       void addMoney(Money m){
           numDollars += m.numDollars;
           numQuarters += m.numQuarters;
           numDimes += m.numDimes;
           numNickels += m.numNickels;
           numPennies += m.numPennies;
       }
       void addDollars(unsigned int d){
           numDollars += d;
       }
       void addQuarters(unsigned int q){
           numQuarters += q;
       }
       void addDimes(unsigned int d){
           numDimes += d;
       }
       void addNickels(unsigned int n){
           numNickels += n;
       }
       void addPennies(unsigned int p){
           numPennies += p;
       }
       void addCents(unsigned int c){
           numQuarters += c/25;
           c %= 25;
           numDimes += c/10;
           c %= 10;
           numNickels += c/5;
           c %= 5;
           numPennies += c;
       }
       void leastCoins(){
           int res = getCents();
           addDollars(res/100);
           res %= 100;
           addCents(res);
       }
       int numberofCoins(){
           return numDollars + numQuarters + numDimes + numNickels + numPennies;
       }
};

Money* makechange(Money& cost, Money& paid){
   int to_pay = 100*cost.numDollars + cost.getCents();
   int given = 100*paid.numDollars + paid.getCents();
   if (to_pay > given) return NULL;
   int get_back = given - to_pay;
   Money m(get_back/100,get_back%100);
   return &m;
}

int main(){
   Money cost(5,6,3,4,5);
   Money paid(10,3,6,7,1);
   Money* ret = makechange(cost,paid);
   return 0;
}