// main.cpp #include "Wymierna.h" int main() { Wymierna liczba1(4,10); Wymierna liczba2(1,5); Wymierna wynik = liczba1 + liczba2; wynik += 3; wynik.wypisz(); return 0; } // Wymierna.h class Wymierna { friend Wymierna operator+(Wymierna, Wymierna); private: // pola (cechy obiektu) int licznik; int mianownik; public: // metody (akcje obiektu) Wymierna(int, int); // konstruktor Wymierna(int); void operator+=(int); void wypisz() const; double wartosc() const; int get_licznik() const; int get_mianownik() const; }; // head.h int NWD(int, int); // Wymierna.cpp #include #include "Wymierna.h" using namespace std; Wymierna::Wymierna(int l, int m) { licznik = l; mianownik = m; } Wymierna::Wymierna(int liczba) { licznik = liczba; mianownik = 1; } void Wymierna::operator+=(int liczba) { licznik += liczba * mianownik; } double Wymierna::wartosc() const { return 1.0 * licznik / mianownik; } int Wymierna::get_licznik() const {return licznik;} int Wymierna::get_mianownik() const {return mianownik;} void Wymierna::wypisz() const {cout << licznik << "/" << mianownik;} // funkcje.cpp #include "Wymierna.h" #include "head.h" int NWD(int a, int b) { for(int i = a; true; --i) { if(a % i == 0) if(b % i ==0) return i; } } Wymierna operator+(Wymierna a, Wymierna b) { Wymierna wynik(a.licznik * b.mianownik + b.licznik * a.mianownik, a.mianownik * b.mianownik); int nwd = NWD(wynik.licznik, wynik.mianownik); wynik.licznik /= nwd; wynik.mianownik /= nwd; return wynik; }