Advertisement
MeehoweCK

Untitled

Nov 5th, 2020
662
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.67 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.     friend Wymierna roznica(Wymierna, Wymierna);
  24.     friend Wymierna iloczyn(Wymierna, Wymierna);
  25.     friend Wymierna iloraz(Wymierna, Wymierna);
  26.     // pola prywatne:
  27.     int licznik;
  28.     int mianownik;
  29. public:     // metody publiczne
  30.     Wymierna();     // konstruktor - metoda tworz¹ca obiekt
  31.     Wymierna(int);
  32.     Wymierna(int, int);
  33.     void set_licznik(int);
  34.     void set_mianownik(int);
  35.     int get_licznik();
  36.     int get_mianownik();
  37.     void wypisz();
  38.     double get_wartosc();
  39. };
  40.  
  41. Wymierna::Wymierna()
  42. {
  43.     // konstruktor wype³nia pola prywatne jakimiœ pocz¹tkowymi wartoœciami:
  44.     licznik = 0;
  45.     mianownik = 1;
  46. }
  47.  
  48. Wymierna::Wymierna(int liczba)
  49. {
  50.     licznik = liczba;
  51.     mianownik = 1;
  52. }
  53.  
  54. Wymierna::Wymierna(int l, int m)
  55. {
  56.     int x = nwd(l, m);
  57.     licznik = l/x;
  58.     mianownik = m/x;
  59. }
  60.  
  61. void Wymierna::set_licznik(int l)
  62. {
  63.     licznik = l;
  64.     int x = nwd(licznik, mianownik);
  65.     licznik /= x;
  66.     mianownik /= x;
  67. }
  68.  
  69. void Wymierna::set_mianownik(int m)
  70. {
  71.     if(m == 0)
  72.     {
  73.         cout << "Nie mozna przypisac mianownikowi wartosci 0\n";
  74.         return;
  75.     }
  76.     mianownik = m;
  77.     int x = nwd(licznik, mianownik);
  78.     licznik /= x;
  79.     mianownik /= x;
  80. }
  81.  
  82. int Wymierna::get_licznik()
  83. {
  84.     return licznik;
  85. }
  86.  
  87. int Wymierna::get_mianownik()
  88. {
  89.     return mianownik;
  90. }
  91.  
  92. void Wymierna::wypisz()
  93. {
  94.     if(mianownik == 1)
  95.     {
  96.         cout << licznik << endl;
  97.         return;
  98.     }
  99.     cout << licznik << '/' << mianownik << endl;
  100. }
  101.  
  102. double Wymierna::get_wartosc()
  103. {
  104.     return 1.0 * licznik / mianownik;
  105. }
  106.  
  107. Wymierna suma(Wymierna A, Wymierna B)
  108. {
  109.     int l, m;
  110.  
  111.     l = A.licznik * B.mianownik + A.mianownik * B.licznik;
  112.  
  113.     m = A.mianownik * B.mianownik;
  114.  
  115.     Wymierna wynik (l, m);
  116.  
  117.     return wynik;
  118. }
  119.  
  120. Wymierna roznica(Wymierna A, Wymierna B)
  121. {
  122.     int l, m;
  123.  
  124.     l = A.licznik * B.mianownik - A.mianownik * B.licznik;
  125.  
  126.     m = A.mianownik * B.mianownik;
  127.  
  128.     Wymierna wynik (l, m);
  129.  
  130.     return wynik;
  131. }
  132.  
  133. Wymierna iloczyn(Wymierna A, Wymierna B)
  134. {
  135.     int l, m;
  136.  
  137.     l = A.licznik * B.licznik;
  138.  
  139.     m = A.mianownik * B.mianownik;
  140.  
  141.     Wymierna wynik (l,m);
  142.  
  143.     return wynik;
  144. }
  145.  
  146. Wymierna iloraz (Wymierna A, Wymierna B)
  147. {
  148.     int l, m;
  149.  
  150.     l = A.licznik * B.mianownik;
  151.  
  152.     m = A.mianownik * B.licznik;
  153.  
  154.     Wymierna wynik(l, m);
  155.  
  156.     return wynik;
  157. }
  158.  
  159. Wymierna operator+(Wymierna A, Wymierna B)
  160. {
  161.     return suma(A, B);
  162. }
  163.  
  164. Wymierna operator-(Wymierna A, Wymierna B)
  165. {
  166.     return roznica(A, B);
  167. }
  168.  
  169. Wymierna operator*(Wymierna A, Wymierna B)
  170. {
  171.     return iloczyn(A, B);
  172. }
  173.  
  174. Wymierna operator/(Wymierna A, Wymierna B)
  175. {
  176.     return iloraz(A, B);
  177. }
  178.  
  179. int main()
  180. {
  181.     Wymierna A(1, 3);
  182.     Wymierna B(1, 2);
  183.  
  184.     Wymierna C = A + B;
  185.  
  186.     Wymierna D = A - B;
  187.  
  188.     Wymierna E = A * B;
  189.     Wymierna F = A / B;
  190.  
  191.     C.wypisz();
  192.     D.wypisz();
  193.     E.wypisz();
  194.     F.wypisz();
  195.  
  196.     if(A > B)
  197.     {
  198.         cout << "A jest wieksze od B" << endl;
  199.     }
  200.     else
  201.     {
  202.         cout << "A nie jest wieksze od B" << endl;
  203.     }
  204.     if(A < B)
  205.     {
  206.         cout << "A jest mniejsze od B" << endl;
  207.     }
  208.     else
  209.     {
  210.         cout << "A nie jest mniejsze od B" << endl;
  211.     }
  212.     if(A == B)
  213.     {
  214.         cout << "A jest rowne B" << endl;
  215.     }
  216.     else
  217.     {
  218.         cout << "A nie jest rowne B" << endl;
  219.     }
  220.  
  221.     return 0;
  222. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement