Advertisement
MeehoweCK

Untitled

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