Advertisement
MeehoweCK

Untitled

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