// main.cpp #include "Wymierna.h" #include using namespace std; int main() { Wymierna liczba1(4,10); Wymierna liczba2(1,5); Wymierna wynik = liczba1 + liczba2; wynik += 3; wynik.wypisz(); Wymierna liczba(2,7); wynik = 2 + 5; cout << endl; wynik.wypisz(); Wymierna nowa(1,3); cout << endl; if(liczba > nowa) cout << "true"; else cout << "false"; cout << endl << nowa << endl; cout << liczba1 << " + " << liczba2 << " = " << liczba1 + liczba2 << endl; return 0; } // Wymierna.h #include using namespace std; class Wymierna { friend Wymierna operator+(Wymierna, Wymierna); friend bool operator>(Wymierna, Wymierna); friend ostream& operator<<(ostream&, const 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; }; // 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; } bool operator>(Wymierna a, Wymierna b) { if(a.wartosc() > b.wartosc()) return true; return false; } ostream& operator<<(ostream& out, const Wymierna& liczba) { if(liczba.mianownik == 1) out << liczba.licznik; else out << liczba.licznik << "/" << liczba.mianownik; return out; }