/* This is the body of the Money ADT/class specificed in money.h Compile (but do not link, like this g++ -c money.cc It will then create a money.o ready to be linked with other modules... */ #include #include "money.h" using namespace std; //Initalizations and casts. Money::Money() { dollars=0; cents=0; } //clean initial values Money::Money(const int n) { dollars=n ; cents=0; } //conversion(cast) Money::Money(const int d, int c) { dollars=d ; cents=(dollars<0?-c:c); } Money::Money(const double n) { dollars=(int)n ; cents=100*(int(n)-dollars); } //a method for outputing an Money. ostream& operator<<(ostream& s, Money n) { if(n.dollars>=0) { s<<" $" << (n.dollars)<<"." << (n.cents<10?"0":"") <0 ) return Money(dollars * b+cc/100, cc%100) ; else return Money(dollars * b+cc/100, ((-cc)%100) ) ; } Money Money::operator-() { return Money( - dollars, -cents ); } Money Money::operator-(Money b) { return *this + (- b) ; } //Overload the comparison operators int operator<(Money a, Money b) { if (a.dollars < b.dollars) return 1; else if (a.dollars == b.dollars) return a.cents(Money a, Money b) { return b < a ; } int operator>=(Money a, Money b) { if (a.dollars >= b.dollars) return 1; else if (a.dollars == b.dollars) return a.cents>=b.cents ; else return 0; } int operator<=(Money a, Money b) { return b >= a ; } int operator==(Money a, Money b) { return a.dollars == b.dollars && a.cents == b.cents; } int operator!=(Money a, Money b) { return a.dollars != b.dollars&& a.cents != b.cents ; }