Advertisement
MeehoweCK

Untitled

Nov 5th, 2020
707
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. int nwd(int a, int b)
  6. {
  7.     if(a < 0) a = -a;
  8.     if(b < 0) b = -b;
  9.  
  10.     while(a != b)
  11.     {
  12.         if(a > b)
  13.             a -= b;
  14.         if(b > a)
  15.             b -= a;
  16.     }
  17.     return a;
  18. }
  19.  
  20. class Wymierna
  21. {
  22.     friend Wymierna suma(Wymierna, Wymierna);
  23.     // pola prywatne:
  24.     int licznik;
  25.     int mianownik;
  26. public:     // metody publiczne
  27.     Wymierna();     // konstruktor - metoda tworz¹ca obiekt
  28.     Wymierna(int);
  29.     Wymierna(int, int);
  30.     void set_licznik(int);
  31.     void set_mianownik(int);
  32.     int get_licznik();
  33.     int get_mianownik();
  34.     void wypisz();
  35.     double get_wartosc();
  36. };
  37.  
  38. Wymierna::Wymierna()
  39. {
  40.     // konstruktor wype³nia pola prywatne jakimiœ pocz¹tkowymi wartoœciami:
  41.     licznik = 0;
  42.     mianownik = 1;
  43. }
  44.  
  45. Wymierna::Wymierna(int liczba)
  46. {
  47.     licznik = liczba;
  48.     mianownik = 1;
  49. }
  50.  
  51. Wymierna::Wymierna(int l, int m)
  52. {
  53.     int x = nwd(l, m);
  54.     licznik = l/x;
  55.     mianownik = m/x;
  56. }
  57.  
  58. void Wymierna::set_licznik(int l)
  59. {
  60.     licznik = l;
  61.     int x = nwd(licznik, mianownik);
  62.     licznik /= x;
  63.     mianownik /= x;
  64. }
  65.  
  66. void Wymierna::set_mianownik(int m)
  67. {
  68.     if(m == 0)
  69.     {
  70.         cout << "Nie mozna przypisac mianownikowi wartosci 0\n";
  71.         return;
  72.     }
  73.     mianownik = m;
  74.     int x = nwd(licznik, mianownik);
  75.     licznik /= x;
  76.     mianownik /= x;
  77. }
  78.  
  79. int Wymierna::get_licznik()
  80. {
  81.     return licznik;
  82. }
  83.  
  84. int Wymierna::get_mianownik()
  85. {
  86.     return mianownik;
  87. }
  88.  
  89. void Wymierna::wypisz()
  90. {
  91.     if(mianownik == 1)
  92.     {
  93.         cout << licznik << endl;
  94.         return;
  95.     }
  96.     cout << licznik << '/' << mianownik << endl;
  97. }
  98.  
  99. double Wymierna::get_wartosc()
  100. {
  101.     return 1.0 * licznik / mianownik;
  102. }
  103.  
  104. Wymierna suma(Wymierna A, Wymierna B)
  105. {
  106.     int l, m;
  107.  
  108.     l = A.licznik * B.mianownik + A.mianownik * B.licznik;
  109.  
  110.     m = A.mianownik * B.mianownik;
  111.  
  112.     Wymierna wynik (l, m);
  113.  
  114.     return wynik;
  115. }
  116.  
  117. int main()
  118. {
  119.     Wymierna A(5, 3);
  120.     Wymierna B(7, 4);
  121.  
  122.     Wymierna C = suma(A, B);
  123.  
  124.     C.wypisz();
  125.  
  126.     return 0;
  127. }
  128.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement