Advertisement
MeehoweCK

Untitled

Dec 8th, 2022
500
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.15 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. class Wymierna
  6. {
  7.     friend Wymierna operator*(Wymierna A, Wymierna B);
  8.     //friend Wymierna iloczyn(Wymierna A, Wymierna B);
  9.     int licznik;
  10.     int mianownik;
  11. public:
  12.     Wymierna();     // konstruktor domyślny (bezargumentowy) - tworzy liczbę wymierną 0
  13.     Wymierna(int l);    // konstruktor jednoargumentowy - tworzy liczbę całkowitą o podanej wartości
  14.     Wymierna(int l, int m);
  15.     double wartosc() const;
  16.     void wypisz() const;
  17.     void ustaw_licznik(int l);
  18.     void ustaw_mianownik(int m);
  19.     int pobierz_licznik() const;
  20.     int pobierz_mianownik() const;
  21. };
  22.  
  23. int nwd(int a, int b)
  24. {
  25.     if(a * b == 0)
  26.         return 0;
  27.     if(a < 0) a = -a;
  28.     if(b < 0) b = -b;
  29.     while(a != b)
  30.     {
  31.         if(a > b)
  32.             a -= b;
  33.         if(b > a)
  34.             b -= a;
  35.     }
  36.     return a;
  37. }
  38.  
  39. Wymierna operator*(Wymierna A, Wymierna B)
  40. {
  41.     int licznik = A.licznik * B.licznik;
  42.     int mianownik = A.mianownik * B.mianownik;
  43.     Wymierna wynik(licznik, mianownik);
  44.     return wynik;
  45. }
  46.  
  47. /*Wymierna iloczyn(Wymierna A, Wymierna B)
  48. {
  49.     int licznik = A.licznik * B.licznik;
  50.     int mianownik = A.mianownik * B.mianownik;
  51.     Wymierna wynik(licznik, mianownik);
  52.     return wynik;
  53. }*/
  54.  
  55. Wymierna::Wymierna() : licznik(0), mianownik(1) {}
  56. Wymierna::Wymierna(int l) : licznik(l), mianownik(1) {}
  57.  
  58. Wymierna::Wymierna(int l, int m)
  59. {
  60.     int dzielnik = nwd(l, m);
  61.  
  62.     if(m < 0)
  63.     {
  64.         l = -l;
  65.         m = -m;
  66.     }
  67.  
  68.     licznik = l / dzielnik;
  69.     mianownik = m / dzielnik;
  70. }
  71.  
  72. double Wymierna::wartosc() const
  73. {
  74.     return 1.0 * licznik / mianownik;
  75. }
  76.  
  77. void Wymierna::wypisz() const
  78. {
  79.     if(mianownik == 1)
  80.         cout << licznik << endl;
  81.     else
  82.         cout << licznik << '/' << mianownik << endl;
  83. }
  84.  
  85. void Wymierna::ustaw_licznik(int l)
  86. {
  87.     licznik = l;
  88. }
  89.  
  90. void Wymierna::ustaw_mianownik(int m)
  91. {
  92.     mianownik = m;
  93. }
  94.  
  95. int Wymierna::pobierz_licznik() const
  96. {
  97.     return licznik;
  98. }
  99.  
  100. int Wymierna::pobierz_mianownik() const
  101. {
  102.     return mianownik;
  103. }
  104.  
  105. int main()
  106. {
  107.     const Wymierna B(7, 5);
  108.     B.wypisz();
  109.     return 0;
  110. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement