Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

Modify the following program to overload the >> so that writing an object of type AltMoney can be done using >>. Your input file, in_file.dat,

Modify the following program to overload the >> so that writing an object of type AltMoney can be done using >>. Your input file, in_file.dat, must have four integer values which represent, respectively the dollars and cents part of the first amount and the dollars and cents part of the second amount. Example: for input $50.34 and $86.73, you have: 50 34 86 73

//This program adds money of two different people // It reads the amounts for two people from an // input file in_file.dat and writes the result into a file out_file.dat #include #include #include using namespace std; class AltMoney { public: AltMoney(); friend void read_money(istream& ins, AltMoney& m); friend AltMoney operator +(AltMoney m1, AltMoney m2); friend void write_money(ofstream& ous, AltMoney m); private: int dollars; int cents; }; void read_money(istream& ins, AltMoney& m); void get_streams(ifstream& ins, ofstream& ous); void write_money(ofstream& ous, AltMoney m); int main( ) { ifstream ins; ofstream ous; AltMoney m1, m2, sum; get_streams(ins, ous); read_money(ins, m1); ous << "The first money is:"; write_money(ous, m1); read_money(ins, m2); ous << "The second money is:"; write_money(ous, m2); sum = m1+m2; ous << "The sum is:"; write_money(ous, sum); ins.close(); ous.close(); return 0; } AltMoney::AltMoney() { } void write_money(ofstream& ous, AltMoney m) { ous << "$" << m.dollars << "."; if(m.cents <= 9) ous << "0"; //to display a 0 on the left for numbers less than 10 ous << m.cents << endl; } AltMoney operator +(AltMoney m1, AltMoney m2) { AltMoney temp; int extra = 0; temp.cents = m1.cents + m2.cents; if(temp.cents >=100) { temp.cents = temp.cents - 100; extra = 1; } temp.dollars = m1.dollars + m2.dollars + extra; return temp; } void read_money(istream& ins, AltMoney& m) { int d, c; ins >> d; ins >> c; if( d < 0 || c < 0) { cout << "Invalid dollars and cents, negative values "; exit(1); } m.dollars = d; m.cents = c; } void get_streams(ifstream& ins, ofstream& ous) { ins.open("in_file.dat"); if(ins.fail()) { cout << "Failed to open the input file. "; exit(1); } ous.open("out_file.dat"); if(ous.fail()) { cout << "Failed to open the output file. "; exit(1); } }

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

Databases And Python Programming MySQL MongoDB OOP And Tkinter

Authors: R. PANNEERSELVAM

1st Edition

9357011331, 978-9357011334

More Books

Students also viewed these Databases questions

Question

How do you try to manipulate your unique smell?

Answered: 1 week ago