Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // main.cpp
- #include <iostream>
- #include "wymierne.h"
- using namespace std;
- int main()
- {
- Wymierna A(2, 3);
- int x = 1;
- Wymierna B = x + A;
- cout << B << endl;
- cout << A << " + " << B << " = " << A + B << endl;
- return 0;
- }
- //wymierne.h
- using namespace std;
- int nwd(int, int);
- class Wymierna
- {
- friend Wymierna suma(Wymierna, Wymierna);
- friend Wymierna roznica(Wymierna, Wymierna);
- friend Wymierna iloczyn(Wymierna, Wymierna);
- friend Wymierna iloraz(Wymierna, Wymierna);
- friend ostream& operator<<(ostream&, const Wymierna&);
- // pola prywatne:
- int licznik;
- int mianownik;
- public: // metody publiczne
- Wymierna(); // konstruktor - metoda tworz¹ca obiekt
- Wymierna(int);
- Wymierna(int, int);
- void set_licznik(int);
- void set_mianownik(int);
- int get_licznik();
- int get_mianownik();
- void wypisz();
- double get_wartosc();
- };
- bool operator>(Wymierna, Wymierna);
- bool operator<(Wymierna, Wymierna);
- bool operator==(Wymierna, Wymierna);
- bool operator>=(Wymierna, Wymierna);
- bool operator<=(Wymierna, Wymierna);
- bool operator!=(Wymierna, Wymierna);
- Wymierna operator+(Wymierna, Wymierna);
- Wymierna operator-(Wymierna, Wymierna);
- Wymierna operator/(Wymierna, Wymierna);
- Wymierna operator*(Wymierna, Wymierna);
- // wymierne.cpp
- #include <iostream>
- #include "wymierne.h"
- using namespace std;
- int nwd(int a, int b)
- {
- if(a < 0) a = -a;
- if(b < 0) b = -b;
- while(a != b)
- {
- if(a > b)
- a -= b;
- if(b > a)
- b -= a;
- }
- return a;
- }
- Wymierna::Wymierna()
- {
- // konstruktor wype³nia pola prywatne jakimiœ pocz¹tkowymi wartoœciami:
- licznik = 0;
- mianownik = 1;
- }
- Wymierna::Wymierna(int liczba)
- {
- licznik = liczba;
- mianownik = 1;
- }
- Wymierna::Wymierna(int l, int m)
- {
- int x = nwd(l, m);
- licznik = l/x;
- mianownik = m/x;
- }
- void Wymierna::set_licznik(int l)
- {
- licznik = l;
- int x = nwd(licznik, mianownik);
- licznik /= x;
- mianownik /= x;
- }
- void Wymierna::set_mianownik(int m)
- {
- if(m == 0)
- {
- cout << "Nie mozna przypisac mianownikowi wartosci 0\n";
- return;
- }
- mianownik = m;
- int x = nwd(licznik, mianownik);
- licznik /= x;
- mianownik /= x;
- }
- int Wymierna::get_licznik()
- {
- return licznik;
- }
- int Wymierna::get_mianownik()
- {
- return mianownik;
- }
- void Wymierna::wypisz()
- {
- if(mianownik == 1)
- {
- cout << licznik << endl;
- return;
- }
- cout << licznik << '/' << mianownik << endl;
- }
- double Wymierna::get_wartosc()
- {
- return 1.0 * licznik / mianownik;
- }
- Wymierna suma(Wymierna A, Wymierna B)
- {
- int l, m;
- l = A.licznik * B.mianownik + A.mianownik * B.licznik;
- m = A.mianownik * B.mianownik;
- Wymierna wynik (l, m);
- return wynik;
- }
- Wymierna roznica(Wymierna A, Wymierna B)
- {
- int l, m;
- l = A.licznik * B.mianownik - A.mianownik * B.licznik;
- m = A.mianownik * B.mianownik;
- Wymierna wynik (l, m);
- return wynik;
- }
- Wymierna iloczyn(Wymierna A, Wymierna B)
- {
- int l, m;
- l = A.licznik * B.licznik;
- m = A.mianownik * B.mianownik;
- Wymierna wynik (l,m);
- return wynik;
- }
- Wymierna iloraz (Wymierna A, Wymierna B)
- {
- int l, m;
- l = A.licznik * B.mianownik;
- m = A.mianownik * B.licznik;
- Wymierna wynik(l, m);
- return wynik;
- }
- Wymierna operator+(Wymierna A, Wymierna B)
- {
- return suma(A, B);
- }
- Wymierna operator-(Wymierna A, Wymierna B)
- {
- return roznica(A, B);
- }
- Wymierna operator*(Wymierna A, Wymierna B)
- {
- return iloczyn(A, B);
- }
- Wymierna operator/(Wymierna A, Wymierna B)
- {
- return iloraz(A, B);
- }
- bool operator > (Wymierna A, Wymierna B)
- {
- if(A.get_wartosc() > B.get_wartosc())
- return true;
- return false;
- }
- bool operator < (Wymierna A, Wymierna B)
- {
- if(A.get_wartosc() < B.get_wartosc())
- return true;
- return false;
- }
- bool operator == (Wymierna A, Wymierna B)
- {
- if(A.get_wartosc() == B.get_wartosc())
- return true;
- return false;
- }
- ostream& operator<<(ostream& strumien, const Wymierna& obiekt)
- {
- if(obiekt.mianownik == 1)
- {
- strumien << obiekt.licznik;
- return strumien;
- }
- strumien << obiekt.licznik << '/' << obiekt.mianownik;
- return strumien;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement