MeehoweCK

Untitled

Dec 8th, 2022
527
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.59 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. class Wymierna
  6. {
  7.     friend ostream& operator<<(ostream& os, const Wymierna& liczba);
  8.     friend Wymierna operator-(Wymierna A, Wymierna B);
  9.     friend Wymierna operator*(Wymierna A, Wymierna B);
  10.     friend Wymierna operator+(Wymierna A, Wymierna B);
  11.     friend Wymierna operator/(Wymierna A, Wymierna B);
  12.     friend bool operator==(Wymierna A, Wymierna B);
  13.     friend bool operator==(double A, Wymierna B);
  14.     friend bool operator==(Wymierna A, double B);
  15.     int licznik;
  16.     int mianownik;
  17. public:
  18.     Wymierna();     // konstruktor domyślny (bezargumentowy) - tworzy liczbę wymierną 0
  19.     Wymierna(int l);    // konstruktor jednoargumentowy - tworzy liczbę całkowitą o podanej wartości
  20.     Wymierna(int l, int m);
  21.     double wartosc() const;
  22.     void wypisz() const;
  23.     void ustaw_licznik(int l);
  24.     void ustaw_mianownik(int m);
  25.     int pobierz_licznik() const;
  26.     int pobierz_mianownik() const;
  27.  
  28.  
  29. };
  30.  
  31.  
  32.  
  33. int nwd(int a, int b)
  34. {
  35.     if(a * b == 0)
  36.         return 0;
  37.     if(a < 0) a = -a;
  38.     if(b < 0) b = -b;
  39.     while(a != b)
  40.     {
  41.         if(a > b)
  42.             a -= b;
  43.         if(b > a)
  44.             b -= a;
  45.     }
  46.     return a;
  47. }
  48.  
  49.  Wymierna operator+(Wymierna A, Wymierna B)
  50.  {
  51.      int licznik = A.licznik * B.mianownik + A.mianownik * B.licznik;
  52.      int mianownik = A.mianownik * B.mianownik;
  53.      Wymierna wynik(licznik, mianownik);
  54.      return wynik;
  55.  }
  56.  
  57.  Wymierna operator-(Wymierna A, Wymierna B)
  58.  {
  59.      return A+(B*(-1));
  60.  
  61.  
  62.  }
  63.  
  64.  
  65.  Wymierna operator/(Wymierna A, Wymierna B)
  66.  {
  67.     int licznik = A.licznik * B.mianownik;
  68.     int mianownik = A.mianownik * B.licznik;
  69.     Wymierna wynik(licznik, mianownik);
  70.     return wynik;
  71.  
  72.  
  73.  }
  74.  
  75.  
  76. Wymierna operator*(Wymierna A, Wymierna B)
  77. {
  78.     int licznik = A.licznik * B.licznik;
  79.     int mianownik = A.mianownik * B.mianownik;
  80.     Wymierna wynik(licznik, mianownik);
  81.     return wynik;
  82. }
  83.  
  84. bool operator==(Wymierna A, Wymierna B)
  85. {
  86.     if(A.wartosc() == B.wartosc())
  87.         return true;
  88.     return false;
  89. }
  90.  
  91. bool operator==(double A, Wymierna B)
  92. {
  93.     if(A == B.wartosc())
  94.         return true;
  95.     return false;
  96. }
  97.  
  98. bool operator==(Wymierna A, double B)
  99. {
  100.     if(A.wartosc() == B)
  101.         return true;
  102.     return false;
  103. }
  104.  
  105. /*Wymierna iloczyn(Wymierna A, Wymierna B)
  106. {
  107.     int licznik = A.licznik * B.licznik;
  108.     int mianownik = A.mianownik * B.mianownik;
  109.     Wymierna wynik(licznik, mianownik);
  110.     return wynik;
  111. }*/
  112.  
  113. Wymierna::Wymierna() : licznik(0), mianownik(1) {}
  114. Wymierna::Wymierna(int l) : licznik(l), mianownik(1) {}
  115.  
  116. Wymierna::Wymierna(int l, int m)
  117. {
  118.     int dzielnik = nwd(l, m);
  119.  
  120.     if(m < 0)
  121.     {
  122.         l = -l;
  123.         m = -m;
  124.     }
  125.  
  126.     licznik = l / dzielnik;
  127.     mianownik = m / dzielnik;
  128. }
  129.  
  130. double Wymierna::wartosc() const
  131. {
  132.     return 1.0 * licznik / mianownik;
  133. }
  134.  
  135. void Wymierna::wypisz() const
  136. {
  137.     if(mianownik == 1)
  138.         cout << licznik << endl;
  139.     else
  140.         cout << licznik << '/' << mianownik << endl;
  141. }
  142.  
  143. ostream& operator<<(ostream& os, const Wymierna& liczba)
  144. {
  145.     if(liczba.mianownik == 1)
  146.         os << liczba.licznik;
  147.     else
  148.         os << liczba.licznik << '/' << liczba.mianownik;
  149.     return os;
  150. }
  151.  
  152. void Wymierna::ustaw_licznik(int l)
  153. {
  154.     licznik = l;
  155. }
  156.  
  157. void Wymierna::ustaw_mianownik(int m)
  158. {
  159.     mianownik = m;
  160. }
  161.  
  162. int Wymierna::pobierz_licznik() const
  163. {
  164.     return licznik;
  165. }
  166.  
  167. int Wymierna::pobierz_mianownik() const
  168. {
  169.     return mianownik;
  170. }
  171.  
  172. int main()
  173. {
  174.     Wymierna A(5, 2);
  175.     Wymierna B(3, 4);
  176.     cout << (2.5 == A) << endl;
  177.     return 0;
  178. }
Advertisement
Add Comment
Please, Sign In to add comment