#include #include using namespace std; class Razlomak{ public: explicit Razlomak(int x = 0, int y = 1) :_brojilac(x), _imenilac(y) { } int vratiBrojilac() const { return this->_brojilac; } int vratiImenilac() const { return this->_imenilac; } void postaviBrojilac(int x) { _brojilac = x; } void postaviImenilac(int x) { _imenilac = x; } void pisi(ostream &izlaz) const { izlaz << _brojilac << "/" << _imenilac; } void citaj(istream &ulaz) { char c; ulaz >> _brojilac >> c >> _imenilac; if (c != '/') throw "Format razlomka nije dobar"; } Razlomak operator+(const Razlomak &b) const { Razlomak tmp; tmp.postaviImenilac(vratiImenilac() * b.vratiImenilac()); tmp.postaviBrojilac(vratiBrojilac() * b.vratiImenilac() + vratiImenilac() * b.vratiBrojilac()); return tmp; } Razlomak operator*(const Razlomak &b) const { return Razlomak(_brojilac * b._brojilac, _imenilac * b._imenilac); } Razlomak operator~() const { return Razlomak(_imenilac, _brojilac); } Razlomak operator++() { _brojilac += _imenilac; return *this; } Razlomak operator++(int) { Razlomak tmp = *this; _brojilac += _imenilac; return tmp; } operator double() const { return (double)_brojilac / _imenilac; } private: int _brojilac; int _imenilac; }; ostream& operator << (ostream& izlaz, const Razlomak& r) { r.pisi(izlaz); return izlaz; } istream& operator >> (istream& ulaz, Razlomak& r) { r.citaj(ulaz); return ulaz; } int main() { Razlomak r, p; cout << "Unesi razlomak r i p: "; try { cin >> r >> p; } catch (const char *s) { cerr << s << endl; exit(EXIT_FAILURE); } catch (...) { cerr << "Nepoznat izuzetak" << endl; exit(EXIT_FAILURE); } cout << "r = " << r << endl; cout << "p = " << p << endl; cout << "r + p = " << r + p << endl; cout << "~r = " << ~r << endl; cout << "++r = " << ++r << endl; cout << "r = " << r << endl; cout << "r++ = " << r++ << endl; cout << "r = " << r << endl; //cout << "r = " << (double)r << endl; cout << "r + 2 = " << r + 2 << endl; return 0; }