MeehoweCK

Untitled

Oct 9th, 2020
1,004
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.54 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. class CRational
  6. {
  7.     friend CRational operator*(CRational, CRational);
  8.     friend CRational operator+(CRational, CRational);
  9.     friend CRational operator-(CRational, CRational);
  10.     friend CRational operator/(CRational, CRational);
  11.     friend ostream& operator<<(ostream&, const CRational&);
  12. private:
  13.     int licznik;
  14.     int mianownik;
  15. public:
  16.     CRational();        // konstruktor domyœlny
  17.     CRational(int);         // sam licznik
  18.     CRational(int, int);            // licznik i mianownik
  19.     int get_licznik();
  20.     int get_mianownik();
  21.     void wypisz();
  22.     void skracaj();
  23. };
  24.  
  25. CRational::CRational()
  26. {
  27.     licznik = 1;
  28.     mianownik = 1;
  29. }
  30.  
  31. CRational::CRational(int l)
  32. {
  33.     licznik = l;
  34.     mianownik = 1;
  35. }
  36.  
  37. CRational::CRational(int l, int m)
  38. {
  39.     licznik = l;
  40.     mianownik = m;
  41.     skracaj();
  42. }
  43.  
  44. void CRational::wypisz()
  45. {
  46.     if(mianownik == 1)
  47.     {
  48.         cout << licznik;
  49.         return;
  50.     }
  51.     cout << licznik << '/' << mianownik;
  52. }
  53.  
  54. int CRational::get_licznik() {return licznik;}
  55.  
  56. int CRational::get_mianownik() {return mianownik;}
  57.  
  58. CRational operator*(CRational A, CRational B)
  59. {
  60.     CRational wynik(A.licznik * B.licznik, A.mianownik * B.mianownik);
  61.     wynik.skracaj();
  62.     return wynik;
  63. }
  64.  
  65. CRational operator+(CRational A, CRational B)
  66. {
  67.     CRational wynik((A.licznik * B.mianownik) + (B.licznik * A.mianownik),A.mianownik * B.mianownik);
  68.     wynik.skracaj();
  69.     return wynik;
  70. }
  71.  
  72. CRational operator-(CRational A, CRational B)
  73. {
  74.     CRational wynik((A.licznik * B.mianownik) - (B.licznik * A.mianownik), A.mianownik * B.mianownik);
  75.     wynik.skracaj();
  76.     return wynik;
  77. }
  78.  
  79. CRational operator/(CRational A, CRational B)
  80. {
  81.     CRational wynik(A.licznik * B.mianownik, A.mianownik * B.licznik);
  82.     wynik.skracaj();
  83.     return wynik;
  84. }
  85.  
  86. ostream& operator<<(ostream& os, const CRational& obiekt)
  87. {
  88.     if(obiekt.mianownik == 1)
  89.         os << obiekt.licznik;
  90.     else
  91.         os << obiekt.licznik << '/' << obiekt.mianownik;
  92.     return os;
  93. }
  94.  
  95. int znajdzNWD(int a, int b)
  96. {
  97.     while(a != b)
  98.     {
  99.         if(a > b)
  100.         {
  101.             a -= b;
  102.         }
  103.         if(b > a)
  104.         {
  105.             b -= a;
  106.         }
  107.     }
  108.  
  109.     return a;
  110. }
  111.  
  112. void CRational::skracaj()
  113. {
  114.     int NWD = znajdzNWD(licznik, mianownik);
  115.  
  116.     licznik /= NWD;
  117.     mianownik /= NWD;
  118. }
  119.  
  120. int main()
  121. {
  122.     CRational C(4, 6);
  123.     CRational B(1, 9);
  124.     CRational X = B + 7;
  125.     cout << X << endl;
  126.     cout << B * C << endl;
  127.     return 0;
  128. }
Advertisement
Add Comment
Please, Sign In to add comment