Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- class CRational
- {
- friend CRational operator*(CRational, CRational);
- friend CRational operator+(CRational, CRational);
- friend CRational operator-(CRational, CRational);
- friend CRational operator/(CRational, CRational);
- friend ostream& operator<<(ostream&, const CRational&);
- private:
- int licznik;
- int mianownik;
- public:
- CRational(); // konstruktor domyœlny
- CRational(int); // sam licznik
- CRational(int, int); // licznik i mianownik
- int get_licznik();
- int get_mianownik();
- void wypisz();
- void skracaj();
- };
- CRational::CRational()
- {
- licznik = 1;
- mianownik = 1;
- }
- CRational::CRational(int l)
- {
- licznik = l;
- mianownik = 1;
- }
- CRational::CRational(int l, int m)
- {
- licznik = l;
- mianownik = m;
- skracaj();
- }
- void CRational::wypisz()
- {
- if(mianownik == 1)
- {
- cout << licznik;
- return;
- }
- cout << licznik << '/' << mianownik;
- }
- int CRational::get_licznik() {return licznik;}
- int CRational::get_mianownik() {return mianownik;}
- CRational operator*(CRational A, CRational B)
- {
- CRational wynik(A.licznik * B.licznik, A.mianownik * B.mianownik);
- wynik.skracaj();
- return wynik;
- }
- CRational operator+(CRational A, CRational B)
- {
- CRational wynik((A.licznik * B.mianownik) + (B.licznik * A.mianownik),A.mianownik * B.mianownik);
- wynik.skracaj();
- return wynik;
- }
- CRational operator-(CRational A, CRational B)
- {
- CRational wynik((A.licznik * B.mianownik) - (B.licznik * A.mianownik), A.mianownik * B.mianownik);
- wynik.skracaj();
- return wynik;
- }
- CRational operator/(CRational A, CRational B)
- {
- CRational wynik(A.licznik * B.mianownik, A.mianownik * B.licznik);
- wynik.skracaj();
- return wynik;
- }
- ostream& operator<<(ostream& os, const CRational& obiekt)
- {
- if(obiekt.mianownik == 1)
- os << obiekt.licznik;
- else
- os << obiekt.licznik << '/' << obiekt.mianownik;
- return os;
- }
- int znajdzNWD(int a, int b)
- {
- while(a != b)
- {
- if(a > b)
- {
- a -= b;
- }
- if(b > a)
- {
- b -= a;
- }
- }
- return a;
- }
- void CRational::skracaj()
- {
- int NWD = znajdzNWD(licznik, mianownik);
- licznik /= NWD;
- mianownik /= NWD;
- }
- int main()
- {
- CRational C(4, 6);
- CRational B(1, 9);
- CRational X = B + 7;
- cout << X << endl;
- cout << B * C << endl;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment