MeehoweCK

Untitled

Jun 29th, 2023
130
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.57 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. class Wymierna
  6. {
  7.     friend ostream& operator<<(ostream&, const Wymierna&);      // nagłówek zaprzyjaźnienia funkcji
  8. private:
  9.     int licznik;
  10.     int mianownik;
  11. public:
  12.     Wymierna();
  13.     Wymierna(int a, int b);
  14.     Wymierna(int calkowita);
  15.     double wartosc() const;
  16.     void print() const;
  17.     void skroc();
  18.     int get_licznik() const { return licznik; }
  19.     int get_mianownik() const { return mianownik; }
  20. };
  21.  
  22. int nwd(int a, int b)
  23. {
  24.     if (a * b == 0)
  25.         return 1;
  26.     if (a < 0)
  27.         a = -a;
  28.     if (b < 0)
  29.         b = -b;
  30.     while (a != b)
  31.     {
  32.         if (a > b)
  33.             a -= b;
  34.         if (b > a)
  35.             b -= a;
  36.     }
  37.     return a;
  38. }
  39.  
  40. Wymierna::Wymierna(int a, int b) : licznik(a), mianownik(b) { skroc(); }
  41.  
  42. Wymierna::Wymierna(int calkowita) : Wymierna(calkowita, 1) {}
  43.  
  44. Wymierna::Wymierna() : Wymierna(0) {}
  45.  
  46. double Wymierna::wartosc() const
  47. {
  48.     return 1.0 * licznik / mianownik;
  49. }
  50.  
  51. void Wymierna::print() const
  52. {
  53.     if (mianownik == 1)
  54.         cout << licznik << endl;
  55.     else
  56.         cout << licznik << "/" << mianownik << endl;
  57. }
  58.  
  59. ostream& operator<<(ostream& os, const Wymierna& liczba)
  60. {
  61.     if (liczba.mianownik == 1)
  62.         os << liczba.licznik;
  63.     else
  64.         os << liczba.licznik << '/' << liczba.mianownik;
  65.     return os;
  66. }
  67.  
  68. void Wymierna::skroc()
  69. {
  70.     int dzielnik = nwd(licznik, mianownik);
  71.     licznik /= dzielnik;
  72.     mianownik /= dzielnik;
  73.     if (mianownik < 0)
  74.     {
  75.         licznik = -licznik;
  76.         mianownik = -mianownik;
  77.     }
  78. }
  79.  
  80. int main()
  81. {
  82.     const Wymierna ulamek(8, 4);
  83.     Wymierna B(1, -3);
  84.     cout << ulamek << endl;
  85.     cout << B << endl;
  86.  
  87.     cout << ulamek + B << endl;
  88.  
  89.  
  90.     return 0;
  91. }
Add Comment
Please, Sign In to add comment