Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- class Wymierna
- {
- friend ostream& operator<<(ostream&, const Wymierna&); // nagłówek zaprzyjaźnienia funkcji
- private:
- int licznik;
- int mianownik;
- public:
- Wymierna();
- Wymierna(int a, int b);
- Wymierna(int calkowita);
- double wartosc() const;
- void print() const;
- void skroc();
- int get_licznik() const { return licznik; }
- int get_mianownik() const { return mianownik; }
- };
- int nwd(int a, int b)
- {
- if (a * b == 0)
- return 1;
- if (a < 0)
- a = -a;
- if (b < 0)
- b = -b;
- while (a != b)
- {
- if (a > b)
- a -= b;
- if (b > a)
- b -= a;
- }
- return a;
- }
- Wymierna::Wymierna(int a, int b) : licznik(a), mianownik(b) { skroc(); }
- Wymierna::Wymierna(int calkowita) : Wymierna(calkowita, 1) {}
- Wymierna::Wymierna() : Wymierna(0) {}
- double Wymierna::wartosc() const
- {
- return 1.0 * licznik / mianownik;
- }
- void Wymierna::print() const
- {
- if (mianownik == 1)
- cout << licznik << endl;
- else
- cout << licznik << "/" << mianownik << endl;
- }
- ostream& operator<<(ostream& os, const Wymierna& liczba)
- {
- if (liczba.mianownik == 1)
- os << liczba.licznik;
- else
- os << liczba.licznik << '/' << liczba.mianownik;
- return os;
- }
- void Wymierna::skroc()
- {
- int dzielnik = nwd(licznik, mianownik);
- licznik /= dzielnik;
- mianownik /= dzielnik;
- if (mianownik < 0)
- {
- licznik = -licznik;
- mianownik = -mianownik;
- }
- }
- int main()
- {
- const Wymierna ulamek(8, 4);
- Wymierna B(1, -3);
- cout << ulamek << endl;
- cout << B << endl;
- cout << ulamek + B << endl;
- return 0;
- }
Add Comment
Please, Sign In to add comment