fork download
  1. #include <iostream>
  2. #include <cstdlib>
  3.  
  4. using namespace std;
  5.  
  6. class CPhanSo
  7. {
  8. private:
  9. int tuSo;
  10. int mauSo;
  11.  
  12. public:
  13. void TaoPhanSo(int, int);
  14. void InPhanSo();
  15. CPhanSo ChuanHoaPS();
  16. CPhanSo RutGonPS();
  17. CPhanSo CongPS(CPhanSo);
  18. CPhanSo TruPS(CPhanSo);
  19. CPhanSo NhanPS(CPhanSo);
  20. CPhanSo ChiaPS(CPhanSo);
  21.  
  22. private:
  23. int UCLN(int, int);
  24. };
  25.  
  26. CPhanSo CPhanSo::CongPS(CPhanSo ps)
  27. {
  28. this->tuSo = this->tuSo * ps.mauSo + ps.tuSo * this->mauSo;
  29. this->mauSo = this->mauSo * ps.mauSo;
  30.  
  31. this->RutGonPS();
  32.  
  33. return *this;
  34. }
  35.  
  36. CPhanSo CPhanSo::TruPS(CPhanSo ps)
  37. {
  38. this->tuSo = this->tuSo * ps.mauSo - ps.tuSo * this->mauSo;
  39. this->mauSo = this->mauSo * ps.mauSo;
  40.  
  41. this->RutGonPS();
  42.  
  43. return *this;
  44. }
  45.  
  46. CPhanSo CPhanSo::NhanPS(CPhanSo ps)
  47. {
  48. this->tuSo = this->tuSo * ps.tuSo;
  49. this->mauSo = this->mauSo * ps.mauSo;
  50.  
  51. this->RutGonPS();
  52.  
  53. return *this;
  54. }
  55.  
  56. CPhanSo CPhanSo::ChiaPS(CPhanSo ps)
  57. {
  58. if (ps.tuSo == 0)
  59. {
  60. cout << "Khong the chia cho phan so co tu so bang 0!";
  61. return *this;
  62. }
  63.  
  64. this->tuSo = this->tuSo * ps.mauSo;
  65. this->mauSo = this->mauSo * ps.tuSo;
  66.  
  67. this->RutGonPS();
  68. this->ChuanHoaPS();
  69.  
  70. return *this;
  71. }
  72.  
  73. int CPhanSo::UCLN(int a, int b)
  74. {
  75. a = abs(a);
  76. b = abs(b);
  77.  
  78. while (b != 0)
  79. {
  80. int r = a % b;
  81. a = b;
  82. b = r;
  83. }
  84.  
  85. return a;
  86. }
  87.  
  88. CPhanSo CPhanSo::RutGonPS()
  89. {
  90. int ucln = UCLN(tuSo, mauSo);
  91.  
  92. tuSo /= ucln;
  93. mauSo /= ucln;
  94.  
  95. return *this;
  96. }
  97.  
  98. CPhanSo CPhanSo::ChuanHoaPS()
  99. {
  100. if (tuSo < 0 && mauSo < 0)
  101. {
  102. tuSo = -tuSo;
  103. mauSo = -mauSo;
  104. }
  105.  
  106. if (tuSo > 0 && mauSo < 0)
  107. {
  108. tuSo = -tuSo;
  109. mauSo = -mauSo;
  110. }
  111.  
  112. return *this;
  113. }
  114.  
  115. void CPhanSo::TaoPhanSo(int tuSo, int mauSo)
  116. {
  117. if (mauSo == 0)
  118. {
  119. cout << "Mau so khong hop le!";
  120. }
  121. else
  122. {
  123. this->tuSo = tuSo;
  124. this->mauSo = mauSo;
  125. }
  126. }
  127.  
  128. void CPhanSo::InPhanSo()
  129. {
  130. cout << tuSo << "/" << mauSo;
  131. }
  132.  
  133. int main()
  134. {
  135. CPhanSo ps, ps1, ps2;
  136.  
  137. ps.TaoPhanSo(1, 5);
  138. ps1.TaoPhanSo(4, 10);
  139. cout<< "\n";
  140.  
  141. ps2 = ps;
  142. ps2.CongPS(ps1);
  143. ps2.InPhanSo();
  144. cout<< "\n";
  145.  
  146. ps2 = ps;
  147. ps2.TruPS(ps1);
  148. ps2.InPhanSo();
  149. cout<< "\n";
  150.  
  151. ps2 = ps;
  152. ps2.NhanPS(ps1);
  153. ps2.InPhanSo();
  154. cout<< "\n";
  155.  
  156. ps2 = ps;
  157. ps2.ChiaPS(ps1);
  158. ps2.InPhanSo();
  159. cout<< "\n";
  160.  
  161. return 0;
  162. }
Success #stdin #stdout 0s 5320KB
stdin
Standard input is empty
stdout
3/5
-1/5
2/25
1/2