#include #include using namespace std; class Razlomak { public: explicit Razlomak(int a = 0, int b = 1) :_brojilac(a), _imenilac(b) { } int vratiBrojilac() const { return _brojilac; } int vratiImenilac() const { return _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 "Neispravan format razlomka"; } Razlomak operator+(const Razlomak& b) const { return Razlomak(vratiBrojilac() * b.vratiImenilac() + vratiImenilac() * b.vratiBrojilac(), vratiImenilac() * b.vratiImenilac() ); } Razlomak operator*(const Razlomak& b) const { return Razlomak(vratiBrojilac() * b.vratiBrojilac(), vratiImenilac() * b.vratiImenilac() ); } Razlomak operator~() const { return Razlomak(_imenilac, _brojilac); } Razlomak operator++() { _brojilac += _imenilac; return *this; } Razlomak operator++(int) { Razlomak tmp(_brojilac, _imenilac); _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; //r.postaviBrojilac(1); //r.postaviImenilac(2); cout << "Unesi razlomake r i p: "; try { cin >> r >> p; } catch (const char *s) { cerr << s << endl; exit(EXIT_FAILURE); } catch (...) { cerr << "Nepoznat tip izuzetka" << endl; exit(EXIT_FAILURE); } cout << "r = " << r << endl; cout << "p = " << p << endl; cout << "r + p = " << r + 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++ = " << r++ << endl; cout << "r = " << r << endl; cout << "(double)r = " << (double)r << endl; cout << "r + 1 = " << r + 1 << endl; return 0; }