Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // main.cpp
- #include <iostream>
- #include "Wymierna.h"
- using namespace std;
- int main()
- {
- Wymierna A(1,0);
- Wymierna B(3,7);
- cout << A << " + " << B << " = " << A + B << endl;
- return 0;
- }
- // head.h
- class Wymierna;
- int nwd(int, int);
- // funkcje.cpp
- 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.h
- #include <iostream>
- using namespace std;
- class Wymierna
- {
- friend Wymierna roznica(Wymierna, Wymierna);
- friend Wymierna iloraz(Wymierna, Wymierna);
- friend Wymierna iloczyn(Wymierna, Wymierna);
- friend Wymierna suma(Wymierna, Wymierna);
- friend Wymierna operator+(Wymierna, Wymierna);
- friend Wymierna operator-(Wymierna, Wymierna);
- friend Wymierna operator*(Wymierna, Wymierna);
- friend Wymierna operator/(Wymierna, Wymierna);
- friend ostream& operator<<(ostream&, const Wymierna&);
- friend bool operator>(Wymierna, Wymierna);
- friend bool operator>=(Wymierna, Wymierna);
- friend bool operator<(Wymierna, Wymierna);
- friend bool operator<=(Wymierna, Wymierna);
- friend bool operator==(Wymierna, Wymierna);
- friend bool operator!=(Wymierna, Wymierna);
- private: // pola prywatne
- int licznik;
- int mianownik;
- public: // metody publiczne
- Wymierna(); // konstruktor domyœlny (bezargumentowy)
- Wymierna(int);
- Wymierna(int, int);
- void wypisz();
- double value();
- void set_licznik(int);
- void set_mianownik(int);
- int get_licznik();
- int get_mianownik();
- void skracaj();
- };
- // Wymierna.cpp
- #include "head.h"
- #include "Wymierna.h"
- /*class Wymierna
- {
- friend Wymierna roznica(Wymierna, Wymierna);
- friend Wymierna iloraz(Wymierna, Wymierna);
- friend Wymierna iloczyn(Wymierna, Wymierna);
- friend Wymierna suma(Wymierna, Wymierna);
- friend Wymierna operator+(Wymierna, Wymierna);
- friend Wymierna operator-(Wymierna, Wymierna);
- friend Wymierna operator*(Wymierna, Wymierna);
- friend Wymierna operator/(Wymierna, Wymierna);
- friend ostream& operator<<(ostream&, const Wymierna&);
- friend operator>(Wymierna, Wymierna);
- friend operator>=(Wymierna, Wymierna);
- friend operator<(Wymierna, Wymierna);
- friend operator<=(Wymierna, Wymierna);
- friend operator==(Wymierna, Wymierna);
- friend operator!=(Wymierna, Wymierna);
- private: // pola prywatne
- int licznik;
- int mianownik;
- public: // metody publiczne
- Wymierna(); // konstruktor domyœlny (bezargumentowy)
- Wymierna(int);
- Wymierna(int, int);
- void wypisz();
- void skracaj();
- double value();
- void set_licznik(int);
- void set_mianownik(int);
- int get_licznik();
- int get_mianownik();
- };*/
- Wymierna::Wymierna() : licznik(0), mianownik(1) {}
- Wymierna::Wymierna(int liczba) : licznik(liczba), mianownik(1) {}
- Wymierna::Wymierna(int l, int m) : licznik(l), mianownik(m)
- {
- if(m == 0)
- {
- cout << "UWAGA: BLEDNY ZAPIS KONSTRUKTORA!!!\n";
- mianownik = 1;
- }
- }
- void Wymierna::wypisz()
- {
- cout << licznik << '/' << mianownik;
- }
- void Wymierna::skracaj()
- {
- if(licznik * mianownik == 0)
- {
- licznik = 0;
- mianownik = 1;
- }
- else
- {
- int dzielnik = nwd(licznik, mianownik);
- licznik /= dzielnik;
- mianownik /= dzielnik;
- }
- }
- double Wymierna::value() {return 1.0 * licznik / mianownik;}
- void Wymierna::set_licznik(int l) {licznik = l;}
- void Wymierna::set_mianownik(int m) {mianownik = m;}
- int Wymierna::get_licznik() {return licznik;}
- int Wymierna::get_mianownik() {return mianownik;}
- Wymierna roznica (Wymierna A, Wymierna B)
- {
- Wymierna wynik(A.licznik * B.mianownik - B.licznik * A.mianownik, A.mianownik * B.mianownik);
- wynik.skracaj();
- return wynik;
- }
- Wymierna iloraz(Wymierna A, Wymierna B)
- {
- Wymierna wynik(A.licznik / B.licznik, A.mianownik / B.mianownik);
- wynik.skracaj();
- return wynik;
- }
- Wymierna iloczyn(Wymierna A, Wymierna B)
- {
- Wymierna wynik(A.licznik * B.licznik, A.mianownik * B.mianownik);
- wynik.skracaj();
- return wynik;
- }
- Wymierna suma(Wymierna A, Wymierna B)
- {
- Wymierna wynik(A.licznik * B.mianownik + B.licznik * A.mianownik, A.mianownik * B.mianownik);
- wynik.skracaj();
- return wynik;
- }
- Wymierna operator+(Wymierna A, Wymierna B) {return suma(A, B);}
- Wymierna operator-(Wymierna A, Wymierna B) {return suma(A, B);}
- Wymierna operator*(Wymierna A, Wymierna B) {return suma(A, B);}
- Wymierna operator/(Wymierna A, Wymierna B) {return suma(A, B);}
- ostream& operator<<(ostream& str, const Wymierna& ob)
- {
- if(ob.mianownik == 1)
- {
- str << ob.licznik;
- return str;
- }
- str << ob.licznik << '/' << ob.mianownik;
- return str;
- }
- bool operator<(Wymierna A, Wymierna B)
- {
- if((1.0* A.licznik / A. mianownik) < (1.0* B.licznik / B.mianownik))
- return true;
- return false;
- }
- bool operator>(Wymierna A, Wymierna B)
- {
- if((1.0* A.licznik / A. mianownik) > (1.0* B.licznik / B.mianownik))
- return true;
- return false;
- }
- bool operator<=(Wymierna A, Wymierna B)
- {
- if((1.0* A.licznik / A. mianownik) <= (1.0* B.licznik / B.mianownik))
- return true;
- return false;
- }
- bool operator>=(Wymierna A, Wymierna B)
- {
- if((1.0* A.licznik / A. mianownik) >= (1.0* B.licznik / B.mianownik))
- return true;
- return false;
- }
- bool operator==(Wymierna A, Wymierna B)
- {
- if((1.0* A.licznik / A. mianownik) == (1.0* B.licznik / B.mianownik))
- return true;
- return false;
- }
- bool operator!=(Wymierna A, Wymierna B)
- {
- if((1.0* A.licznik / A. mianownik) != (1.0* B.licznik / B.mianownik))
- return true;
- return false;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement