======9. přednáška====== Třída ''zlomek'' má dvě privátní složky - ''citatel'' a ''jmenovatel'' a dále privátní metodu ''zkrat'', kterou budou používat všechny metody po výpočtu. Dále má implicitní, parametrický a kopírovací konstruktor a destruktor. Medtodz umožňují k aktuální instanci přičíst, odečíst či přinásobit jiný zlomek a změnit znaménko. Gettery vrací hodnotu čítatele a jmenovatale. Dále obsahuje metody pro výpis a test na stejnou hodnotu. Spřátelená funkce ''nsd'' nalezne největšího společného dělitele čitatele a jmenovatele. #include using namespace std; class zlomek { private: int jmenovatel, citatel; void zkrat(); public: zlomek(){}; zlomek(int c, int j=1):citatel(c),jmenovatel(j){} zlomek(zlomek const &z){jmenovatel=z.jmenovatel;citatel=z.citatel;} void minus(); void pricti(zlomek z); void odecti(zlomek z); void vynasob(zlomek z); int getcitatel(){return citatel;} int getjmenovatel(){return jmenovatel;} void vypis(); bool je_stejny(zlomek z); friend int nsd(zlomek z); }; void swap(int &a, int &b) { int c; c=a; a=b; b=c; } int nsd(int a, int b) { if (a>b) swap(a, b); int c; do { c = a%b; a=b; b=c; } while(c); return a; } int nsn(int a, int b) { return a*b/nsd(a,b); } void zlomek::pricti(zlomek z) { citatel = citatel*z.jmenovatel+jmenovatel*z.citatel; jmenovatel = jmenovatel*z.jmenovatel; zkrat(); } void zlomek::odecti(zlomek z) { citatel = citatel*z.jmenovatel-jmenovatel*z.citatel; jmenovatel = jmenovatel*z.jmenovatel; zkrat(); } void zlomek::vynasob(zlomek z) { citatel = citatel*z.citatel; jmenovatel = jmenovatel*z.jmenovatel; zkrat(); } int nsd(zlomek z) { return nsd(z.citatel, z.jmenovatel); } void zlomek::zkrat() { int delitel = nsd(*this); jmenovatel /= delitel; citatel /= delitel; } void zlomek::vypis() { cout << citatel << "/" << jmenovatel << endl; } void zlomek::minus() { citatel = -citatel; } bool zlomek::je_stejny(zlomek z) { return (citatel*z.jmenovatel==jmenovatel*z.citatel); } int main(void) { zlomek a(2,5), b(3,4), c(2, 3), d(4, 6); a.pricti(b); a.vypis(); a.minus(); a.vypis(); if (d.je_stejny(c)) cout << "ano" << endl; else cout << "ne" << endl; return 0; }