#include "razlomak.hpp" void Razlomak::postaviBrojilac(int brojilac) { _brojilac = brojilac; } void Razlomak::postaviImenilac(int imenilac) { _imenilac = imenilac; } void Razlomak::pisi(ostream& izlaz) const { izlaz << vratiBrojilac() << "/" << vratiImenilac(); } ostream& operator<<(ostream& izlaz, const Razlomak& r) { r.pisi(izlaz); return izlaz; } void Razlomak::citaj(istream& ulaz) { int a, b; char c; ulaz >> a >> c >> b; if (c != '/') throw "Neuspelo ucitavanje razlomka"; postaviBrojilac(a); postaviImenilac(b); } istream& operator>>(istream& ulaz, Razlomak& r) { r.citaj(ulaz); return ulaz; } Razlomak saberi(const Razlomak& x, const Razlomak& y) { return Razlomak( x.vratiBrojilac() * y.vratiImenilac() + x.vratiImenilac() * y.vratiBrojilac(), x.vratiImenilac() * y.vratiImenilac()); } Razlomak Razlomak::operator+(const Razlomak& y) const { return Razlomak( vratiBrojilac() * y.vratiImenilac() + vratiImenilac() * y.vratiBrojilac(), vratiImenilac() * y.vratiImenilac()); } Razlomak Razlomak::operator-(const Razlomak& y) const { return Razlomak( vratiBrojilac() * y.vratiImenilac() - vratiImenilac() * y.vratiBrojilac(), vratiImenilac() * y.vratiImenilac()); } Razlomak Razlomak::operator*(const Razlomak& y) const { return Razlomak( vratiBrojilac() * y.vratiBrojilac(), vratiImenilac() * y.vratiImenilac()); } Razlomak Razlomak::operator/(const Razlomak& y) const { return Razlomak( vratiBrojilac() * y.vratiImenilac(), vratiImenilac() * y.vratiBrojilac()); } Razlomak Razlomak::operator~() const { return Razlomak(_imenilac, _brojilac); } Razlomak::operator double() const { return (double)_brojilac / _imenilac; }