MeehoweCK

Untitled

Jan 21st, 2021
624
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  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 iloczyn(Wymierna, Wymierna);
  23.     friend Wymierna suma(Wymierna, Wymierna);
  24. private:            // pola prywatne
  25.     int licznik;
  26.     int mianownik;
  27. public:             // metody publiczne
  28.     Wymierna();     // konstruktor domyślny (bezargumentowy)
  29.     Wymierna(int);
  30.     Wymierna(int, int);
  31.     void wypisz();
  32.     double value() {return 1.0 * licznik / mianownik;}
  33.     // metody dostępowe:
  34.     void set_licznik(int l) {licznik = l;}
  35.     void set_mianownik(int m) {mianownik = m;}
  36.     int get_licznik() {return licznik;}
  37.     int get_mianownik() {return mianownik;}
  38.     void skracaj();
  39. };
  40.  
  41. Wymierna::Wymierna() : licznik(0), mianownik(1) {}
  42.  
  43. Wymierna::Wymierna(int liczba) : licznik(liczba), mianownik(1) {}
  44.  
  45. Wymierna::Wymierna(int l, int m) : licznik(l), mianownik(m) {}
  46.  
  47. void Wymierna::wypisz()
  48. {
  49.     cout << licznik << '/' << mianownik;
  50. }
  51.  
  52. void Wymierna::skracaj()
  53. {
  54.     if(licznik * mianownik == 0)
  55.     {
  56.         licznik = 0;
  57.         mianownik = 1;
  58.     }
  59.     else
  60.     {
  61.         int dzielnik = nwd(licznik, mianownik);
  62.         licznik /= dzielnik;
  63.         mianownik /= dzielnik;
  64.     }
  65. }
  66.  
  67. Wymierna iloczyn(Wymierna A, Wymierna B)
  68. {
  69.     Wymierna wynik(A.licznik * B.licznik, A.mianownik * B.mianownik);
  70.     wynik.skracaj();
  71.     return wynik;
  72. }
  73.  Wymierna suma(Wymierna A, Wymierna B)
  74.  {
  75.     Wymierna wynik(A.licznik * B.mianownik + B.licznik * A.mianownik, A.mianownik * B.mianownik);
  76.     wynik.skracaj();
  77.     return wynik;
  78.  }
  79.  
  80.  
  81. int main()
  82. {
  83.     Wymierna liczba(3,4);   // wywołanie konstruktora
  84.     //liczba.wypisz();
  85.     Wymierna liczba2(3, 4);
  86.     Wymierna A = iloczyn(liczba, liczba2);
  87.     Wymierna B = suma(liczba, liczba2);
  88.     B.wypisz();
  89.     cout<<endl;
  90.     A.wypisz();
  91.     return 0;
  92. }
RAW Paste Data