fork download
  1. #include <iostream>
  2. using namespace std;
  3. class Decimal{
  4. private:
  5. int numeration, denomination;
  6. public:
  7. //Decimal();
  8. //Decimal(int a);
  9. Decimal(int a,int b);
  10. /*
  11. Decimal(const Decimal &d);
  12. void set_numerator(int a);
  13. void set_denominator(int a);
  14. inline int get_numerator();
  15. inline int get_denominator();
  16. void simplify();
  17. Decimal operator+(const Decimal &d);
  18. Decimal operator+(int a);
  19. */
  20. Decimal operator+=(const Decimal &d);
  21. /*Decimal operator+=(int a);
  22. Decimal operator-(const Decimal &d);
  23. Decimal operator-(int a);*/
  24. Decimal operator-=(const Decimal &d);
  25. /*
  26. Decimal operator-=(int a);
  27. Decimal operator-();
  28. Decimal operator*(const Decimal &d);
  29. Decimal operator*(int a);
  30. Decimal operator/(const Decimal &d);
  31. Decimal operator/(int a);
  32. bool operator ==(const Decimal &d);
  33. bool operator >(const Decimal &d);
  34. bool operator <(const Decimal &d);
  35. bool operator >=(const Decimal &d);
  36. bool operator <=(const Decimal &d);
  37. bool operator !=(const Decimal &d);
  38. bool operator =(const Decimal &d);
  39. operator float();
  40. operator double();*/
  41. friend ostream& operator<< (ostream &out, const Decimal &d);
  42. /*friend istream& operator>> (istream &in, Decimal &d);
  43. friend Decimal operator +(int a,const Decimal &d);
  44. friend Decimal operator +=(int a,const Decimal &d);
  45. friend Decimal operator -(int a,const Decimal &d);
  46. friend Decimal operator -=(int a,const Decimal &d);
  47. friend Decimal operator *(int a,const Decimal &d);
  48. friend Decimal operator /(int a,const Decimal &d);
  49. */
  50. };
  51.  
  52. Decimal::Decimal(int a,int b){
  53. this->numeration=a;
  54. if(b!=0)
  55. this->denomination=b;
  56. else
  57. this->denomination=1;
  58. }
  59.  
  60.  
  61. ostream& operator<< (ostream &out, const Decimal &d){
  62. out << d.numeration << "/" << d.denomination;
  63. return out;
  64. }
  65.  
  66.  
  67. Decimal Decimal::operator+=(const Decimal &d){
  68. this->numeration *= d.denomination; // 3/4 += 1/5 => 3/4 + 1/5 = (3*5 + 1*4)/(4*5)
  69. this->numeration += this->denomination * d.numeration;
  70. this->denomination *= d.denomination;
  71. return *this;
  72. }
  73.  
  74. Decimal Decimal::operator-=(const Decimal &d){
  75. this->numeration *= d.denomination; //(3*5 - 1*4)/(4*5)
  76. this->numeration -= this->denomination * d.numeration;
  77. this->denomination *= d.denomination;
  78. return *this;
  79. }
  80.  
  81.  
  82.  
  83.  
  84. int main()
  85. {
  86. Decimal dc1(2, 5);
  87. Decimal dc2(3, 9);
  88.  
  89. dc1 +=dc2;
  90.  
  91. cout << dc1;
  92.  
  93. return 0;
  94. }
Success #stdin #stdout 0s 4428KB
stdin
Standard input is empty
stdout
33/45