
Concept explainers
Modify the definition of the class Money shown in Display 11.8 so that all of the following are added:
a. The operators <, <=, >, and >= have each been overloaded to apply to the type Money. (Hint: See Self-Test Exercise 13.)
b. The following member function has been added to the class definition. (We show the function declaration as it should appear in the class definition. The definition of the function itself will include the qualifier Money::.)
Money percent(int percentFigure) const; //Returns a percentage of the money amount in the //calling object. For example, if percentFigure is 10, //then the value returned is 10% of the amount of //money represented by the calling object. |
For example, if purse is an object of type Money whose value represents the amount $100.10, then the call
purse.percent(10); |
returns 10% of $100.10; that is, it returns a value of type Money that represents the amount $10.01.

“Money” Class
Program plan:
- Include required header file.
- Define a class for “Money”.
- Declare the function for overload operator “<”, “<=”, “>’, “>=”, “+”, “-” and “==”.
- Declare the constructor for “Money” class.
- Declare the function for compute total amount, total dollars and total cents.
- Declare the function for “percent” function.
- Declare the function for operator “>>” and “<<”.
- Declare required variables.
- Define function for overload operator “<”, “<=”, “>” and “>=”.
- Define function for “percent”.
- This function is used to compute the percentage amount for given money.
- Define function for arithmetic operator “+” and “-” with two arguments.
- Define function for overload operator “==”.
- Define function for overload operator “-” with one parameter.
- Define default constructor for “Money” class, constructor with one argument and two arguments.
- Define the function “computeTotalAmount”.
- This function is used to compute the total amount.
- Define the function “computeTotalDollars”.
- This function is used to compute the dollars in given amount.
- Define the function “computeTotalCents”.
- This function is used to compute the cents in given amount.
- Define the function “forDollarConversion” which is used to convert amount to dollar
- Define the function “forCentsConversion” which is used to convert the amount to cents.
- Define the function “forRoundedValue” which is used for convert the result in rounded value.
- Define function for input and output operator.
- Define main function
- Create an object for “Money” class.
- Create an object for “Money” class with argument.
- Declare variable for file input and file output.
- Open the given input file.
- Check the given file is found or not using “if” loop.
- Read the amount from file.
- Display the purse amount.
- Compare the given amount and purse amount.
- Compute sum of amount and purse and display it.
- Compute the difference of two amount and display it.
- Check the amount using the comparison operator “>=”.
- Check the amount using the comparison operator “>”.
- Check the amount using the comparison operator “<=”.
- Check the amount using the comparison operator “<”.
- Finally close input and output file.
The below C++ program is used to implement the “Money” class with the overload operators such as “<”, “<=”, “>” and “>=” and compute the percent of given amount.
Explanation of Solution
Program:
#include<iostream>
#include<fstream>
#include<cstdlib>
#include<cmath>
using namespace std;
//Create a class name, Money
class Money
{
public:
//Function declaration for operators <, <=, >, and >=
friend bool operator < (const Money& amount1, const Money& amount2);
friend bool operator <= (const Money& amount1, const Money& amount2);
friend bool operator > (const Money& amount1, const Money& amount2);
friend bool operator >= (const Money& amount1, const Money& amount2);
//Function declaration for operators +, -, and ==
friend Money operator + (const Money& amount1, const Money& amount2);
friend Money operator - (const Money& amount1, const Money& amount2);
friend Money operator - (const Money& amount);
friend bool operator == (const Money& amount1, const Money& amount2);Money();
//Constructor for "Money" class
Money(double amount);
Money(int dollars, int cents);
Money(int nDollars);
/* Function declaration for compute total amount, total dollars and total cents */
double computeTotalAmount() const;
int computeTotalDollars() const;
int computeTotalCents() const;
/* Function declaration for compute the percent for given amount */
Money percent(int percentFigure) const;
friend istream& operator >>(istream& ins, Money& amount);
//Overloads the >> operator so it can be used to input values of type Money.
//Notation for inputting negative amounts is as in -$100.00.
//Precondition: If ins is a file input stream, then ins has already been
//connected to a file.
friend ostream& operator <<(ostream& outs, const Money& amount);
//Overloads the << operator so it can be used to output values of type Money.
//Precedes each output value of type Money with a dollar sign.
//Precondition: If outs is a file output stream,
//then outs has already been connected to a file.
private:
//Declare member variables
int dollars, cents;
int forDollarConversion(double amount) const;
int forCentsConversion(double amount) const;
int forRoundedValue(double number) const;
};
//Function definition of operator '<'
bool operator < (const Money& amount1, const Money& amount2)
{
//Return given result
return (amount1.dollars < amount2.dollars) ||
((amount1.dollars == amount2.dollars) &&
(amount1.cents < amount2.cents));
}
//Function definition of operator '<='
bool operator <= (const Money& amount1, const Money& amount2)
{
//Return given result
return ((amount1.dollars < amount2.dollars) || ((amount1.dollars == amount2.dollars) &&
(amount1.cents < amount2.cents)))
|| ((amount1.dollars == amount2.dollars)
&& (amount1.cents == amount2.cents));
}
//Function definition of operator '>'
bool operator > (const Money& amount1, const Money& amount2)
{
//Return given result
return (amount1.dollars > amount2.dollars)
|| ((amount1.dollars == amount2.dollars) && (amount1.cents > amount2.cents));
}
//Function definition of operator '>='
bool operator >=(const Money& amount1, const Money& amount2)
{
//Return given result
return ((amount1.dollars > amount2.dollars) ||
((amount1.dollars == amount2.dollars) &&
(amount1.cents > amount2.cents))) ||
((amount1.dollars == amount2.dollars) &&
(amount1.cents == amount2.cents));
}
//Function definition of percent
Money Money::percent(int percentFigure) const
{
int d = dollars * percentFigure / 100;
int c = dollars * percentFigure % 100 + cents * percentFigure / 100;
return Money(d, c);
}
//Function definition of operator '+'
Money operator + (const Money& amount1, const Money& amount2)
{
int cent1 = amount1.cents + amount1.dollars * 100;
int cent2 = amount2.cents + amount2.dollars * 100;
int totalCents = (cent1 + cent2);
int aCents = abs(totalCents);
int tDollars = aCents / 100;
int tCents = aCents % 100;
if (totalCents < 0)
{
tDollars = -tDollars;
tCents = -tCents;
}
//Return given result
return Money(tDollars, tCents);
}
//Function definition of operator '-' for two arguments
Money operator -(const Money& amount1, const Money& amount2)
{
int c1 = amount1.cents + amount1.dollars * 100;
int c2 = amount2.cents + amount2.dollars * 100;
int differCents = c1 - c2;
int aCents = abs(differCents);
int tDollars = aCents / 100;
int tCents = aCents % 100;
if (differCents < 0)
{
tDollars = -tDollars;
tCents = -tCents;
}
//Return given result
return Money(tDollars, tCents);
}
//Function definition of operator '=='
bool operator == (const Money& amount1, const Money& amount2)
{
//Return given result
return((amount1.dollars == amount2.dollars) && (amount1.cents == amount2.cents));
}
//Function definition of operator '-' for one argument
Money operator - (const Money& amount)
{
//Return given result
return Money(-amount.dollars, -amount.cents);
}
//Constructor initialization
Money::Money(): dollars(0), cents(0)
{
}
//Constructor for "Money" class
Money::Money(double amount): dollars(forDollarConversion(amount)), cents(forCentsConversion(amount))
{
}
//Constructor for "Money" class
Money::Money(int d): dollars(d), cents(0)
{
}
//Constructor for "Money" class
Money::Money(int d, int c)
{
if ((d < 0 && c > 0) || (d > 0 && c < 0))
{
cout << "The given data is invalid" << endl;
exit(1);
}
dollars = d;
cents = c;
}
//Function definition of computeTotalAmount
double Money::computeTotalAmount() const
{
//Return given result
return (dollars + cents*0.01);
}
//Function definition of computeTotalDollars
int Money::computeTotalDollars() const
{
//Return given result
return dollars;
}
//Function definition of computeTotalCents
int Money::computeTotalCents() const
{
//Return given result
return cents;
}
//Function definition of forDollarConversion
int Money::forDollarConversion(double amount) const
{
//Return given result
return static_cast<int>(amount);
}
//Function definition of forCentsConversion
int Money::forCentsConversion(double amount) const
{
/* Compute cents from given amount */
double doubleCents = amount * 100;
int ncents = (forRoundedValue(fabs(doubleCents))) % 100;
if (amount < 0)
ncents = -ncents;
return ncents;
}
//Function definition of forRoundedValue
int Money::forRoundedValue(double value) const
{
//Return given result
return floor(value + 0.5);
}
//Function definition for "<<" operator
ostream& operator <<(ostream& outs, const Money& amount)
{
/* Compute dollars and cents using "abs" */
int aDollars = abs(amount.dollars);
int aCents = abs(amount.cents);
//Check condition for cents
if (amount.dollars < 0 || amount.cents < 0)
outs << "$-";
else
outs << '$';
outs << aDollars;
if (aCents >= 10)
outs << '.' << aCents;
else
outs << '.' << '0' << aCents;
return outs;
}
//Function definition for operator '>>'
istream& operator >> (istream& ins, Money& amount)
{
//Declare variables
char dollarSign;
double increaseAmount;
//Read sign of dollars from file
ins >> dollarSign;
/* Check the dollar sign */
if (dollarSign != '$')
{
/* Display message */
cout << "No dollar symbol" << endl;
exit(1);
}
//Read increase amount from file
ins >> increaseAmount;
//Compute dollars for given amount
amount.dollars = amount.forDollarConversion(increaseAmount);
//Compute cents for given amount
amount.cents = amount.forCentsConversion(increaseAmount);
return ins;
}
//Main function
int main()
{
//Create a object for "Money" class
Money amount;
//Create a object for "Money" class with argument
Money purse(100, 10);
//Declare variable for file input
ifstream inStream;
//Declare variable for file output
ofstream outStream;
//Open input file
inStream.open("infile.dat");
/* If the given file is not found, then */
if (inStream.fail())
{
//Display an error message
cout << "Input file opening failed.\n";
//For exit function
exit(1);
}
//Open the output file
outStream.open("outfile.dat");
/* If the output file is not found, then */
if (outStream.fail())
{
//Display an error message
cout << "Output file opening failed.\n";
//For exit function
exit(1);
}
//Read the amount from file
inStream >> amount;
//Display given statement to output file
outStream << amount << " copied from the file infile.dat.\n";
//Display the output
cout << amount << " copied from the file infile.dat.\n";
cout <<"The purse amount is " << purse << endl;
//Call percent function for purse amount
cout << "10% of purse amount: " << purse.percent(10) << endl;
//Compare the given amout and
if (amount == purse)
cout << "The given amount and purse amounts are equal." << endl;
else
cout << "The given amount and purse amounts are not equal." << endl;
//Compute sum of amount and purse
Money totalAmount = amount + purse;
//Display sum of amount
cout << amount << " + " << purse << " = " << totalAmount << endl;
//Compute the difference of two amount
Money diff = amount - purse;
/* Display difference of two amount */
cout << amount << " - " << purse << " = " << diff << endl;
/* Check the amount using the comparison operator ">=" */
if (amount >= purse)
/* Display message */
cout << "The amount is greater than or equal to the purse amount. " << endl;
/* Check the amount using the comparison operator ">" */
if (totalAmount > diff)
/* Display message */
cout << "The sum of amounts is greater than the difference amount. " << endl;
/* Check the amount using the comparison operator "<=" */
if (amount <= purse)
/* Display message */
cout << "The given amount is less than or equal to purse amount. " << endl;
else
/* Display message */
cout << "The given amount is greater than the purse amount. " << endl;
/* Check the amount using the comparison operator "<" */
if (totalAmount < diff)
/* Display message */
cout << "The sum of amounts is less than the difference." << endl;
else
/* Display message */
cout << "The sum of amounts is greater than the difference." << endl;
/* Close input file*/
inStream.close();
/* Close output file */
outStream.close();
}
infile.dat:
$1.11
$2.22
$3.33
$1.11 copied from the file infile.dat.
The purse amount is $100.10
10% of purse amount: $10.01
The given amount and purse amounts are not equal.
$1.11 + $100.10 = $101.21
$1.11 - $100.10 = $-98.99
The sum of amounts is greater than the difference amount.
The given amount is less than or equal to purse amount.
The sum of amounts is greater than the difference.
outfile.dat:
$1.11 copied from the file infile.dat.
Want to see more full solutions like this?
Chapter 11 Solutions
Problem Solving with C++ (10th Edition)
Additional Engineering Textbook Solutions
Starting Out with Java: From Control Structures through Objects (7th Edition) (What's New in Computer Science)
Degarmo's Materials And Processes In Manufacturing
SURVEY OF OPERATING SYSTEMS
Starting Out with Python (4th Edition)
Java How to Program, Early Objects (11th Edition) (Deitel: How to Program)
Starting Out With Visual Basic (8th Edition)
- PHP is the server-side scripting language. MySQL is used with PHP to store all the data. EXPLAIN in details how to install and run the PHP/MySQL on your computer. List the issues and challenges I may encounter while making this set-up? why I asked: I currently have issues logging into http://localhost/phpmyadmin/ and I tried using the command prompt in administrator to reset the password but I got the error LOCALHOST PORT not found.arrow_forwardHTML defines content, CSS defines layout, and JavaScript adds logic to the website on the client side. EXPLAIN IN DETAIL USING an example.arrow_forwardusing r languangearrow_forward
- List down the strenghts and weaknesses of your team project for Capsim Simulation? Explan.arrow_forwardCapsim Team PowerPoint Presentations - Slide Title: Key LearningsWhat were the key learnings that you discovered as a team through your Capsim simulation?arrow_forwardWrite the SQL code that permits to implement the tables: Student and Transcript. NB: Add the constraints on the attributes – keys and other.arrow_forward
- C++ Programming: From Problem Analysis to Program...Computer ScienceISBN:9781337102087Author:D. S. MalikPublisher:Cengage LearningC++ for Engineers and ScientistsComputer ScienceISBN:9781133187844Author:Bronson, Gary J.Publisher:Course Technology PtrEBK JAVA PROGRAMMINGComputer ScienceISBN:9781337671385Author:FARRELLPublisher:CENGAGE LEARNING - CONSIGNMENT
- Microsoft Visual C#Computer ScienceISBN:9781337102100Author:Joyce, Farrell.Publisher:Cengage Learning,Programming Logic & Design ComprehensiveComputer ScienceISBN:9781337669405Author:FARRELLPublisher:Cengage



