
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++ (9th 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)
- Here is a clear background and explanation of the full method, including what each part is doing and why. Background & Motivation Missing values: Some input features (sensor channels) are missing for some samples due to sensor failure or corruption. Missing labels: Not all samples have a ground-truth RUL value. For example, data collected during normal operation is often unlabeled. Most traditional deep learning models require complete data and full labels. But in our case, both are incomplete. If we try to train a model directly, it will either fail to learn properly or discard valuable data. What We Are Doing: Overview We solve this using a Teacher–Student knowledge distillation framework: We train a Teacher model on a clean and complete dataset where both inputs and labels are available. We then use that Teacher to teach two separate Student models: Student A learns from incomplete input (some sensor values missing). Student B learns from incomplete labels (RUL labels missing…arrow_forwardhere is a diagram code : graph LR subgraph Inputs [Inputs] A[Input C (Complete Data)] --> TeacherModel B[Input M (Missing Data)] --> StudentA A --> StudentB end subgraph TeacherModel [Teacher Model (Pretrained)] C[Transformer Encoder T] --> D{Teacher Prediction y_t} C --> E[Internal Features f_t] end subgraph StudentA [Student Model A (Trainable - Handles Missing Input)] F[Transformer Encoder S_A] --> G{Student A Prediction y_s^A} B --> F end subgraph StudentB [Student Model B (Trainable - Handles Missing Labels)] H[Transformer Encoder S_B] --> I{Student B Prediction y_s^B} A --> H end subgraph GroundTruth [Ground Truth RUL (Partial Labels)] J[RUL Labels] end subgraph KnowledgeDistillationA [Knowledge Distillation Block for Student A] K[Prediction Distillation Loss (y_s^A vs y_t)] L[Feature Alignment Loss (f_s^A vs f_t)] D -- Prediction Guidance --> K E -- Feature Guidance --> L G --> K F --> L J -- Supervised Guidance (if available) --> G K…arrow_forwarddetails explanation and background We solve this using a Teacher–Student knowledge distillation framework: We train a Teacher model on a clean and complete dataset where both inputs and labels are available. We then use that Teacher to teach two separate Student models: Student A learns from incomplete input (some sensor values missing). Student B learns from incomplete labels (RUL labels missing for some samples). We use knowledge distillation to guide both students, even when labels are missing. Why We Use Two Students Student A handles Missing Input Features: It receives input with some features masked out. Since it cannot see the full input, we help it by transferring internal features (feature distillation) and predictions from the teacher. Student B handles Missing RUL Labels: It receives full input but does not always have a ground-truth RUL label. We guide it using the predictions of the teacher model (prediction distillation). Using two students allows each to specialize in…arrow_forward
- We are doing a custom JSTL custom tag to make display page to access a tag handler. Write two custom tags: 1) A single tag which prints a number (from 0-99) as words. Ex: <abc:numAsWords val="32"/> --> produces: thirty-two 2) A paired tag which puts the body in a DIV with our team colors. Ex: <abc:teamColors school="gophers" reverse="true"> <p>Big game today</p> <p>Bring your lucky hat</p> <-- these will be green text on blue background </abc:teamColors> Details: The attribute for numAsWords will be just val, from 0 to 99 - spelling, etc... isn't important here. Print "twenty-six" or "Twenty six" ... . Attributes for teamColors are: school, a "required" string, and reversed, a non-required boolean. - pick any four schools. I picked gophers, cyclones, hawkeyes and cornhuskers - each school has two colors. Pick whatever seems best. For oine I picked "cyclones" and red text on a gold body - if…arrow_forwardI want a database on MySQL to analyze blood disease analyses with a selection of all its commands, with an ER drawing, and a complete chart for normalization. I want them completely.arrow_forwardAssignment Instructions: You are tasked with developing a program to use city data from an online database and generate a city details report. 1) Create a new Project in Eclipse called "HW7". 2) Create a class "City.java" in the project and implement the UML diagram shown below and add comments to your program. 3) The logic for the method "getCityCategory" of City Class is below: a. If the population of a city is greater than 10000000, then the method returns "MEGA" b. If the population of a city is greater than 1000000 and less than 10000000, then the method returns "LARGE" c. If the population of a city is greater than 100000 and less than 1000000, then the method returns "MEDIUM" d. If the population of a city is below 100000, then the method returns "SMALL" 4) You should create another new Java program inside the project. Name the program as "xxxx_program.java”, where xxxx is your Kean username. 3) Implement the following methods inside the xxxx_program program The main method…arrow_forward
- CPS 2231 - Computer Programming – Spring 2025 City Report Application - Due Date: Concepts: Classes and Objects, Reading from a file and generating report Point value: 40 points. The purpose of this project is to give students exposure to object-oriented design and programming using classes in a realistic application that involves arrays of objects and generating reports. Assignment Instructions: You are tasked with developing a program to use city data from an online database and generate a city details report. 1) Create a new Project in Eclipse called "HW7”. 2) Create a class "City.java" in the project and implement the UML diagram shown below and add comments to your program. 3) The logic for the method "getCityCategory" of City Class is below: a. If the population of a city is greater than 10000000, then the method returns "MEGA" b. If the population of a city is greater than 1000000 and less than 10000000, then the method returns "LARGE" c. If the population of a city is greater…arrow_forwardPlease calculate the average best-case IPC attainable on this code with a 2-wide, in-order, superscalar machine: ADD X1, X2, X3 SUB X3, X1, 0x100 ORR X9, X10, X11 ADD X11, X3, X2 SUB X9, X1, X3 ADD X1, X2, X3 AND X3, X1, X9 ORR X1, X11, X9 SUB X13, X14, X15 ADD X16, X13, X14arrow_forwardOutline the overall steps for configuring and securing Linux servers Consider and describe how a mixed Operating System environment will affect what you have to do to protect the company assets Describe at least three technologies that will help to protect CIA of data on Linux systemsarrow_forward
- Node.js, Express, Nunjucks, MongoDB, and Mongoose There are a couple of programs similar to this assignment given in the lecture notes for the week that discusses CRUD operations. Specifically, the Admin example and the CIT301 example both have index.js code and nunjucks code similar to this assignment. You may find some of the other example programs useful as well. It would ultimately save you time if you have already studied these programs before giving this assignment a shot. Either way, hopefully you'll start early and you've kept to the schedule in terms of reading the lecture notes. You will need to create a database named travel using compass, then create a collection named trips. Use these names; your code must work with my database. The trips documents should then be imported unto the trips collection by importing the JSON file containing all the data as linked below. The file itself is named trips.json, and is available on the course website in the same folder as this…arrow_forwardusing r languagearrow_forwardusing r languagearrow_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



