Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<cmath>
- #include<iostream>
- using namespace std;
- class Money
- {
- public:
- Money();
- Money(double amount);
- Money(int theDollars,int theCents);
- Money(int theDollars);
- friend istream& operator >>(istream& inputstream,Money& amount);
- friend ostream& operator <<(ostream& outputstream,Money& amount);
- friend const bool operator >(const Money& amount1,const Money& amount2);
- friend const bool operator >=(const Money& amount1,const Money& amount2);
- friend const bool operator <(const Money& amount1,const Money& amount2);
- friend const bool operator <=(const Money& amount1,const Money& amount2);
- const Money percent(int percentfigure);
- double getAmount()const{return dollars+cents*0.01;}
- int getDollars()const{return dollars;}
- int getCents()const{return cents;}
- private:
- int dollars;
- int cents;
- int dollarspart(double amount)const;
- int centspart(double amount)const;
- int round(double number)const;
- };
- int main()
- {
- Money youramount,myamount;
- cout<<"And my acount is: ";
- cin >>myamount;
- myamount.percent(10);
- cout<<myamount.getDollars();
- cout<<"After 10 percents,My amount is changed to"<<myamount;
- return 0;
- }
- Money::Money():dollars(0),cents(0){}
- Money::Money(double amount):dollars(dollarspart(amount)),cents(centspart(amount)){}
- Money::Money(int theDollars,int theCents):dollars(theDollars),cents(theCents){}
- Money::Money(int theDollars):dollars(theDollars),cents(0){}
- istream& operator >>(istream& inputstream,Money& amount)
- {
- char dollarsign;
- double doubledollar;
- inputstream>>dollarsign;
- if(dollarsign!='$')
- {
- cout<<"No dollar sign in Money input.";
- exit(1);
- }
- inputstream>>doubledollar;
- amount.dollars=amount.dollarspart(doubledollar);
- amount.cents=amount.centspart(doubledollar);
- return inputstream;
- }
- ostream& operator <<(ostream& outputstream,Money& amount)
- {
- int absdollars=abs(amount.dollars),abscents=abs(amount.cents);
- if(amount.dollars<0||amount.cents<0)
- outputstream<<"$-";
- else
- outputstream<<"$";
- outputstream<<absdollars;
- if(abscents<10)
- outputstream<<".0"<<abscents;
- else
- outputstream<<"."<<abscents;
- return outputstream;
- }
- const bool operator >(const Money& amount1,const Money& amount2)
- {
- double sumamount1=amount1.dollars+amount1.cents*0.01,
- sumamount2=amount2.dollars+amount2.cents*0.01;
- if(sumamount1>sumamount2)
- return true;
- else
- return false;
- }
- const bool operator >=(const Money& amount1,const Money& amount2)
- {
- double sumamount1=amount1.dollars+amount1.cents*0.01,
- sumamount2=amount2.dollars+amount2.cents*0.01;
- if(sumamount1>=sumamount2)
- return true;
- else
- return false;
- }
- const bool operator <(const Money& amount1,const Money& amount2)
- {
- double sumamount1=amount1.dollars+amount1.cents*0.01,
- sumamount2=amount2.dollars+amount2.cents*0.01;
- if(sumamount1<sumamount2)
- return true;
- else
- return false;
- }
- const bool operator <=(const Money& amount1,const Money& amount2)
- {
- double sumamount1=amount1.dollars+amount1.cents*0.01,
- sumamount2=amount2.dollars+amount2.cents*0.01;
- if(sumamount1<=sumamount2)
- return true;
- else
- return false;
- }
- const Money Money::percent(int percentfigure)
- {
- double doubleamount=(dollars+cents*0.01)*percentfigure/100.0;
- dollars=dollarspart(doubleamount);
- cents=centspart(doubleamount);
- return Money(dollars,cents);
- }
- int Money::dollarspart(double amount)const
- {
- return static_cast<int>(amount);
- }
- int Money::centspart(double amount)const
- {
- double doublecents=amount*100;
- int intcents=(round(fabs(doublecents)))%100;
- if(doublecents<0)
- intcents=-intcents;
- return intcents;
- }
- int Money::round(double number)const
- {
- return static_cast<int>(floor(number+0.5));
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement