#include<iostream> #include<fstream> #include<cstdlib> #include<cctype> using na
ID: 3617459 • Letter: #
Question
#include<iostream> #include<fstream> #include<cstdlib> #include<cctype>using namespace std; int digit_to_int(char c); class Money { public: friend istream& operator>>(istream& ins, Money& amount); friend ostream& operator<<(ostream& outs, const Money& amount); friend bool operator<(const Money& left_side, const Money& right_side); friend bool operator<=(const Money& left_side, const Money& right_side); friend bool operator>(const Money& left_side, const Money& right_side); friend bool operator>=(const Money& left_side, constMoney& right_side); Money(long dollars); Money(long dollars,intcents); Money(); doubleget_value()const;
private: long all_cents; }; Money::Money(long dollars,int cents) { if(dollars*cents<0) { cout <<"Illegal values fordollars and cents. "; exit(1); } all_cents = dollars * 100+cents; } Money::Money(long dollars) { all_cents=dollars*100; } Money::Money() { all_cents=0; } double Money::get_value() const { return all_cents*0.01; } istream& operator >>(istream& ins,Money& amount) { char one_char, decimal_point, digit1,digit2; long dollars; int cents; bool negative; ins>>one_char; if(one_char=='-') { negative=true; } ins>>dollars>>decimal_point>>digit1>>digit2; if(one_char!='$'||decimal_point!='.'||!isdigit(digit1)||!isdigit(digit2)) { cout <<"Error illegalform of money input. "; exit(1); } cents=digit_to_int(digit1)*10+digit_to_int(digit2); amount.all_cents=-amount.all_cents; return ins; } ostream& operator <<(ostream&outs, const Money& amount) { long positive_cents,dollars,cents; positive_cents=labs(amount.all_cents); dollars=positive_cents/100; cents=positive_cents%100; if(amount.all_cents<0) outs<<"-$"<<dollars<<'.'; else outs<<"$"<<dollars<<'.'; if(cents<10) outs<<'0'; outs<<cents; return outs;
} bool operator <(const Money& left_side,const Money& right_side) { return left_side.all_cents<right_side.all_cents; } bool operator <=(const Money& left_side, constMoney& right_side) { return left_side.all_cents<=right_side.all_cents; } bool operator >(const Money& left_side, constMoney& right_side) { return left_side.all_cents>right_side.all_cents; } bool operator >=(const Money& left_side, constMoney& right_side) { return left_side.all_cents>=right_side.all_cents; } int digit_to_int(char d) {return d-48; } int main() { Money amount; ifstream in_stream; ofstream out_stream; in_stream.open("infile.dat"); if(in_stream.fail()) { cout <<"Input file openingfailed. "; exit(1); }
out_stream.open("outfile.dat"); if(out_stream.fail()); { cout <<"Output file openingfailed. "; exit(1); } in_stream>>amount; out_stream<<amount<<"copiedfrom the file infile.dat . "; cout<<amount<<"copied fromfile infile.dat . "; in_stream.close(); out_stream.close(); system("pause"); return 0; } #include<iostream> #include<fstream> #include<cstdlib> #include<cctype>
using namespace std; int digit_to_int(char c); class Money { public: friend istream& operator>>(istream& ins, Money& amount); friend ostream& operator<<(ostream& outs, const Money& amount); friend bool operator<(const Money& left_side, const Money& right_side); friend bool operator<=(const Money& left_side, const Money& right_side); friend bool operator>(const Money& left_side, const Money& right_side); friend bool operator>=(const Money& left_side, constMoney& right_side); Money(long dollars); Money(long dollars,intcents); Money(); doubleget_value()const;
private: long all_cents; }; Money::Money(long dollars,int cents) { if(dollars*cents<0) { cout <<"Illegal values fordollars and cents. "; exit(1); } all_cents = dollars * 100+cents; } Money::Money(long dollars) { all_cents=dollars*100; } Money::Money() { all_cents=0; } double Money::get_value() const { return all_cents*0.01; } istream& operator >>(istream& ins,Money& amount) { char one_char, decimal_point, digit1,digit2; long dollars; int cents; bool negative; ins>>one_char; if(one_char=='-') { negative=true; } ins>>dollars>>decimal_point>>digit1>>digit2; if(one_char!='$'||decimal_point!='.'||!isdigit(digit1)||!isdigit(digit2)) { cout <<"Error illegalform of money input. "; exit(1); } cents=digit_to_int(digit1)*10+digit_to_int(digit2); amount.all_cents=-amount.all_cents; return ins; } ostream& operator <<(ostream&outs, const Money& amount) { long positive_cents,dollars,cents; positive_cents=labs(amount.all_cents); dollars=positive_cents/100; cents=positive_cents%100; if(amount.all_cents<0) outs<<"-$"<<dollars<<'.'; else outs<<"$"<<dollars<<'.'; if(cents<10) outs<<'0'; outs<<cents; return outs;
} bool operator <(const Money& left_side,const Money& right_side) { return left_side.all_cents<right_side.all_cents; } bool operator <=(const Money& left_side, constMoney& right_side) { return left_side.all_cents<=right_side.all_cents; } bool operator >(const Money& left_side, constMoney& right_side) { return left_side.all_cents>right_side.all_cents; } bool operator >=(const Money& left_side, constMoney& right_side) { return left_side.all_cents>=right_side.all_cents; } int digit_to_int(char d) {return d-48; } int main() { Money amount; ifstream in_stream; ofstream out_stream; in_stream.open("infile.dat"); if(in_stream.fail()) { cout <<"Input file openingfailed. "; exit(1); }
out_stream.open("outfile.dat"); if(out_stream.fail()); { cout <<"Output file openingfailed. "; exit(1); } in_stream>>amount; out_stream<<amount<<"copiedfrom the file infile.dat . "; cout<<amount<<"copied fromfile infile.dat . "; in_stream.close(); out_stream.close(); system("pause"); return 0; }
Explanation / Answer
x.X
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.