Advertisement
Guest User

Untitled

a guest
Jul 28th, 2017
47
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.64 KB | None | 0 0
  1. #include<cmath>
  2. #include<iostream>
  3. using namespace std;
  4. class Money
  5. {
  6. public:
  7. Money();
  8. Money(double amount);
  9. Money(int theDollars,int theCents);
  10. Money(int theDollars);
  11. friend istream& operator >>(istream& inputstream,Money& amount);
  12. friend ostream& operator <<(ostream& outputstream,Money& amount);
  13. friend const bool operator >(const Money& amount1,const Money& amount2);
  14. friend const bool operator >=(const Money& amount1,const Money& amount2);
  15. friend const bool operator <(const Money& amount1,const Money& amount2);
  16. friend const bool operator <=(const Money& amount1,const Money& amount2);
  17. const Money percent(int percentfigure);
  18. double getAmount()const{return dollars+cents*0.01;}
  19. int getDollars()const{return dollars;}
  20. int getCents()const{return cents;}
  21. private:
  22. int dollars;
  23. int cents;
  24. int dollarspart(double amount)const;
  25. int centspart(double amount)const;
  26. int round(double number)const;
  27. };
  28. int main()
  29. {
  30. Money youramount,myamount;
  31. cout<<"And my acount is: ";
  32. cin >>myamount;
  33. myamount.percent(10);
  34. cout<<myamount.getDollars();
  35. cout<<"After 10 percents,My amount is changed to"<<myamount;
  36. return 0;
  37. }
  38. Money::Money():dollars(0),cents(0){}
  39. Money::Money(double amount):dollars(dollarspart(amount)),cents(centspart(amount)){}
  40. Money::Money(int theDollars,int theCents):dollars(theDollars),cents(theCents){}
  41. Money::Money(int theDollars):dollars(theDollars),cents(0){}
  42. istream& operator >>(istream& inputstream,Money& amount)
  43. {
  44. char dollarsign;
  45. double doubledollar;
  46. inputstream>>dollarsign;
  47. if(dollarsign!='$')
  48. {
  49. cout<<"No dollar sign in Money input.";
  50. exit(1);
  51. }
  52. inputstream>>doubledollar;
  53. amount.dollars=amount.dollarspart(doubledollar);
  54. amount.cents=amount.centspart(doubledollar);
  55. return inputstream;
  56. }
  57. ostream& operator <<(ostream& outputstream,Money& amount)
  58. {
  59. int absdollars=abs(amount.dollars),abscents=abs(amount.cents);
  60. if(amount.dollars<0||amount.cents<0)
  61. outputstream<<"$-";
  62. else
  63. outputstream<<"$";
  64. outputstream<<absdollars;
  65. if(abscents<10)
  66. outputstream<<".0"<<abscents;
  67. else
  68. outputstream<<"."<<abscents;
  69. return outputstream;
  70. }
  71. const bool operator >(const Money& amount1,const Money& amount2)
  72. {
  73. double sumamount1=amount1.dollars+amount1.cents*0.01,
  74. sumamount2=amount2.dollars+amount2.cents*0.01;
  75. if(sumamount1>sumamount2)
  76. return true;
  77. else
  78. return false;
  79. }
  80. const bool operator >=(const Money& amount1,const Money& amount2)
  81. {
  82. double sumamount1=amount1.dollars+amount1.cents*0.01,
  83. sumamount2=amount2.dollars+amount2.cents*0.01;
  84. if(sumamount1>=sumamount2)
  85. return true;
  86. else
  87. return false;
  88. }
  89. const bool operator <(const Money& amount1,const Money& amount2)
  90. {
  91. double sumamount1=amount1.dollars+amount1.cents*0.01,
  92. sumamount2=amount2.dollars+amount2.cents*0.01;
  93. if(sumamount1<sumamount2)
  94. return true;
  95. else
  96. return false;
  97. }
  98. const bool operator <=(const Money& amount1,const Money& amount2)
  99. {
  100. double sumamount1=amount1.dollars+amount1.cents*0.01,
  101. sumamount2=amount2.dollars+amount2.cents*0.01;
  102. if(sumamount1<=sumamount2)
  103. return true;
  104. else
  105. return false;
  106. }
  107. const Money Money::percent(int percentfigure)
  108. {
  109. double doubleamount=(dollars+cents*0.01)*percentfigure/100.0;
  110. dollars=dollarspart(doubleamount);
  111. cents=centspart(doubleamount);
  112. return Money(dollars,cents);
  113. }
  114. int Money::dollarspart(double amount)const
  115. {
  116. return static_cast<int>(amount);
  117. }
  118. int Money::centspart(double amount)const
  119. {
  120. double doublecents=amount*100;
  121. int intcents=(round(fabs(doublecents)))%100;
  122. if(doublecents<0)
  123. intcents=-intcents;
  124. return intcents;
  125. }
  126. int Money::round(double number)const
  127. {
  128. return static_cast<int>(floor(number+0.5));
  129. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement