int NWD(int a, int b) { if (a != b) { if (a < b) { NWD(a, b - a); } else { NWD(a - b, b); } } else { return a; } } class Ulamek { public: int Licznik; int Mianownik; Ulamek() { } Ulamek(int licznik, int mianownik) { Licznik = licznik; if (mianownik != 0) Mianownik = mianownik; } static Ulamek Suma(Ulamek one, Ulamek two) { Ulamek ret = Ulamek(); if (one.Mianownik == two.Mianownik) { ret.Licznik = one.Licznik + two.Licznik; ret.Mianownik = one.Mianownik; } else { ret.Licznik = one.Licznik * two.Mianownik + two.Licznik * one.Mianownik; ret.Mianownik = one.Mianownik * two.Mianownik; } return ret; } static Ulamek Roznica(Ulamek one, Ulamek two) { Ulamek ret = Ulamek(); if (one.Mianownik == two.Mianownik) { ret.Licznik = one.Licznik - two.Licznik; ret.Mianownik = one.Mianownik; } else { ret.Licznik = one.Licznik * two.Mianownik - two.Licznik * one.Mianownik; ret.Mianownik = one.Mianownik * two.Mianownik; } return ret; } static Ulamek Iloczyn(Ulamek one, Ulamek two) { return Ulamek(one.Licznik * two.Licznik, two.Mianownik * one.Mianownik); } static Ulamek Iloraz(Ulamek one, Ulamek two) { return Ulamek(one.Licznik * two.Mianownik, two.Licznik * one.Mianownik); } static Ulamek Skroc(Ulamek One) { int a = NWD(One.Licznik, One.Mianownik); return Ulamek(One.Licznik / a, One.Mianownik / a); } };