Reference no: EM13165833
Write in C++ another overloaded operator to go in the program that has Treasury. Overload the forward slash / so that in the main program, you can declare sale to be of type Treasury, and commission to be of type Treasury, and commispctage to be of type double, writing
Treasury sale, commission;
double commisspctage;
commisspctage = 6.25;
cin>> sale;
cout<<sale<<" is value of sale.\n";
commission = sale/commisspctage;
cout<<"The commission is "<<commission<<endl;
Write in C++ another overloaded operator to go in the program that has Treasury. Overload the forward slash / so that in the main program, you can declare sale to be of type Treasury, and commission to be of type Treasury, and commispctage to be of type double, writing
Treasury sale, commission;
double commisspctage;
commisspctage = 6.25;
cin>> sale;
cout<<sale<<" is value of sale.\n";
commission = sale/commisspctage;
cout<<"The commission is "<<commission<<endl;
to have it calculate the commission at 6.25 percent of the sale. (Notice that 6.25 is the percent as given in the main program. Within your function code of the overloaded operator you will need to convert that to a decimal fraction. Also in the function code, use static_cast to avoid mode-mixing between int and double
variables. Note that you will be returning something of type Treasury.
And while you're working on the program, please improve the << operator function code so it will handle outputting single-digit cents correctly.
NOTE: Test your forward slash calculation using at least these sets of data for the sale
100 dollars 0 cents
987 dollars 89 cents
23 dollars 99 cents
1359 dollars 99 cents
And CHECK the output by hand to make sure it gives you the correct results.
//
#include <iostream>
using namespace std;
class Treasury
{
public:
Treasury(); // default constructor to initialize to 10 dollars and 0 cents
Treasury(int wholedollars); // constructor toinitialize the dollar part only
Treasury(int dollaramt, int centsamt); // costructor to initialize both parts
friend Treasury operator + (const Treasury& amt1, const Treasury& amt2);
friend ostream& operator <<(ostream& outs, const Treasury& thevalue);
friend istream& operator >>(istream& ins, Treasury& avalue);
friend bool operator == (const Treasury& oneside, const Treasury& otherside);
private:
int dollars, cents;
};
int main()
{
Treasury billfold(25,50), pocket(3,48), total, check(28,98);
total = billfold + pocket;
if(total == check)
cout<<"The total amount is "<<total<<endl; // where second << is overloaded
else
cout<<"Something went wrong.\n";
// add an overload of / so that sale/commisspctage calculates the commission where commisspctage of the sale is, say, 6.25 percent
return 0;
}
Treasury::Treasury() // default constructor to initialize to 10 dollars and 0 cents
{
dollars = 10;
cents = 0;
}
Treasury::Treasury(int wholedollars) // constructor toinitialize the dollar part only
{
dollars = wholedollars;
}
Treasury::Treasury(int dollaramt, int centsamt) // costructor to initialize both parts
{
dollars = dollaramt;
cents = centsamt;
}
Treasury operator + (const Treasury& amt1, const Treasury& amt2)
{
int totdollars, totcents;
Treasury result;
totdollars = amt1.dollars + amt2.dollars;
totcents = amt1.cents + amt2.cents;
if(totcents >= 100)
{
totdollars++;
totcents = totcents % 100;
}
result.dollars = totdollars;
result.cents = totcents;
return result;
}
ostream& operator <<(ostream& outs, const Treasury& thevalue)
{
outs<<"$"<<thevalue.dollars<<"."<<thevalue.cents;
return outs;
}
istream& operator >>(istream& ins, Treasury& avalue) // note: don't use const here
{
ins>>avalue.dollars>>avalue.cents;
return ins;
}
bool operator == (const Treasury& oneside, const Treasury& otherside)
{
if((oneside.dollars == otherside.dollars) && (oneside.cents == otherside.cents))
return true;
else
return false;
}