Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- int NWD(int a, int b)
- {
- while(a!=b)
- if(a>b)
- a-=b;
- else
- b-=a;
- return a;
- }
- class Fraction
- {
- int Licznik;
- int Mianownik;
- public:
- friend ostream & operator<<( std::ostream & out, const Fraction & t);
- Fraction &operator- (const Fraction &te)
- {
- int licz , mian;
- licz = this->Licznik*te.Mianownik - te.Licznik*this->Mianownik;
- mian = this->Mianownik*te.Mianownik;
- int licz_wynik;
- int mian_wynik;
- if (licz < 0)
- licz_wynik = -licz;
- else
- licz_wynik = licz;
- if (mian < 0)
- mian_wynik = -mian;
- else
- mian_wynik = mian;
- int nwd=NWD(mian_wynik,licz_wynik);
- mian = mian / nwd;
- licz = licz / nwd;
- Fraction result = *new Fraction(licz,mian);
- return result;
- }
- Fraction &operator+ (const Fraction &te)
- {
- int licz , mian;
- mian = this->Mianownik*te.Mianownik;
- licz = this->Licznik*te.Mianownik + te.Licznik*this->Mianownik;
- int licz_wynik;
- int mian_wynik;
- if (licz < 0)
- licz_wynik = -1*licz;
- else
- licz_wynik = licz;
- if (mian < 0)
- mian_wynik = -1*mian;
- else
- mian_wynik = mian;
- int nwd=NWD(mian_wynik,licz_wynik);
- mian = mian / nwd;
- licz = licz / nwd;
- Fraction result = *new Fraction(licz,mian);
- return result;
- }
- Fraction &operator/ (const Fraction &te)
- {
- int licz , mian;
- licz = this->Licznik*te.Mianownik;
- mian = this->Mianownik*te.Licznik;
- int licz_wynik;
- int mian_wynik;
- if (licz < 0)
- licz_wynik = -1*licz;
- else
- licz_wynik = licz;
- if (mian < 0)
- mian_wynik = -1*mian;
- else
- mian_wynik = mian;
- int nwd=NWD(mian_wynik,licz_wynik);
- mian = mian / nwd;
- licz = licz / nwd;
- Fraction result = *new Fraction(licz,mian);
- return result;
- }
- Fraction &operator* (const Fraction &te)
- {
- int licz , mian;
- licz = this->Licznik*te.Licznik;
- mian = this->Mianownik*te.Mianownik;
- int licz_wynik;
- int mian_wynik;
- if (licz < 0)
- licz_wynik = -licz;
- else
- licz_wynik = licz;
- if (mian < 0)
- mian_wynik = -mian;
- else
- mian_wynik = mian;
- int nwd=NWD(mian_wynik,licz_wynik);
- mian = mian / nwd;
- licz = licz / nwd;
- Fraction result = *new Fraction(licz,mian);
- return result;
- }
- Fraction &operator+= (const Fraction &te)
- {
- int licz , mian;
- mian = this->Mianownik*te.Mianownik;
- licz = this->Licznik*te.Mianownik + te.Licznik*this->Mianownik;
- int licz_wynik;
- int mian_wynik;
- if (licz < 0)
- licz_wynik = -1*licz;
- else
- licz_wynik = licz;
- if (mian < 0)
- mian_wynik = -1*mian;
- else
- mian_wynik = mian;
- int nwd=NWD(mian_wynik,licz_wynik);
- mian = mian / nwd;
- licz = licz / nwd;
- Licznik = licz;
- Mianownik = mian;
- return *this;
- }
- Fraction &operator-= (Fraction &te)
- {
- int mian=this->Mianownik*te.getDenominator();
- int licz= this->getNumerator()* te.getDenominator() - te.getNumerator()*this->getDenominator();
- for(int i = 0 ; i <=500 ; i++ )
- int a = 0;
- int licz_wynik;
- int mian_wynik;
- if (licz < 0)
- licz_wynik = -1*licz;
- else
- licz_wynik = licz;
- if (mian < 0)
- mian_wynik = -1*mian;
- else
- mian_wynik = mian;
- int nwd=NWD(mian_wynik,licz_wynik);
- mian = mian / nwd;
- licz = licz / nwd;
- Licznik = licz;
- Mianownik = mian;
- return *this;
- }
- Fraction &operator^(int wart)
- {
- int licz = Licznik;
- int mian = Mianownik;
- if ( wart > 1)
- for ( int i = wart ; i > 1 ; i-- )
- {
- licz = Licznik * licz;
- mian = Mianownik * mian;
- } else if ( wart == 0 )
- {
- Licznik = 1;
- Mianownik = 1;
- return *this;
- } else if ( wart == 1 )
- return *this;
- int licz_wynik;
- int mian_wynik;
- if (licz < 0)
- licz_wynik = -1*licz;
- else
- licz_wynik = licz;
- if (mian < 0)
- mian_wynik = -1*mian;
- else
- mian_wynik = mian;
- int nwd=NWD(mian_wynik,licz_wynik);
- mian = mian / nwd;
- licz = licz / nwd;
- this->Licznik = licz;
- this->Mianownik = mian;
- return *this;
- }
- Fraction(int licz_wynik , int mian_wynik)
- {
- int licz;
- int mian;
- if (licz_wynik < 0)
- licz = -licz_wynik;
- else
- licz = licz_wynik;
- if (mian_wynik < 0)
- mian = -mian_wynik;
- else
- mian = mian_wynik;
- int nwd=NWD(mian,licz);
- mian=mian/nwd;
- licz=licz/nwd;
- if(licz_wynik < 0)
- licz = licz*-1;
- Licznik = licz;
- Mianownik = mian;
- }
- int getNumerator()
- {
- return this->Licznik;
- }
- int getDenominator()
- {
- return this->Mianownik;
- }
- double getValue()
- {
- double result = (double)Licznik/(double)Mianownik;
- return result;
- }
- };
- ostream & operator<<( std::ostream & exit, const Fraction & te)
- {
- exit << te.Licznik << '/' << te.Mianownik;
- return exit;
- }
- int main()
- {
- Fraction a(5, 4);
- Fraction b(4, 1);
- cout << a<<endl;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement