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; //lub a = a - b;
- else
- b-=a; //lub b = b-a
- return a; // lub b - obie zmienne przechowują wynik NWD(a,b)
- }
- class Ulamek{
- int licznik;
- int mianownik;
- public:
- Ulamek(int licz, int mian){
- licznik = licz;
- mianownik = mian;
- }
- Ulamek(const Ulamek& u){
- mianownik = u.mianownik;
- licznik = u.licznik;
- }
- Ulamek dodaj(const Ulamek& u) const{
- int x = this->licznik * u.mianownik;
- int y = this->mianownik * u.mianownik;
- int a = u.licznik * this->mianownik;
- return Ulamek(x+a,y);
- }
- Ulamek mnoz(const Ulamek& u) const{
- return Ulamek(this->licznik*u.licznik, this->mianownik*u.mianownik);
- }
- friend ostream& operator<<(ostream& str, Ulamek u){
- int x = u.licznik%u.mianownik;
- if(x==0){
- return str << u.licznik / u.mianownik;
- }
- int y = (u.licznik - x)/u.mianownik;
- int a = NWD(abs(u.mianownik), abs(x));
- x = x/a;
- u.mianownik = u.mianownik/a;
- return str << y << " " << abs(x) << "/" << abs(u.mianownik);
- }
- friend Ulamek operator+(const Ulamek& u, const Ulamek& v){
- return u.dodaj(v);
- }
- };
- int main() {
- Ulamek u1 = Ulamek(-10,-9);
- Ulamek u2 = Ulamek(-8,6);
- Ulamek u3 = Ulamek(15,5);
- cout<<u1<<endl;
- cout<<u2<<endl;
- cout<<u3<<endl;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement