#include <iostream>
#include <stdlib.h>
using namespace std;
int Nod (int a, int b)
{
while(a > 0 && b > 0)
if(a > b)
a %= b;
else
b %= a;
return a + b;
}
class Rational
{
public:
int a,b; //a-числитель b-знаменатель//
Rational (){ a=0; b=1;}
Rational (int chislit, int znamenat);
Rational operator+(Rational s) ;
Rational operator-(Rational s);
Rational operator*(Rational s);
Rational operator/(Rational s);
bool operator==(Rational s);
bool operator!=(Rational s);
void operator+=(Rational s);
void Print ();
void Change(int x,int y);
void toNormal();
};
void Rational::toNormal()
{
int f;
if (a>b)
f=Nod(a,b);
else
f=Nod(b,a);
a=a/f;
b=b/f;
}
Rational::Rational (int chislit, int znamenat)
{
a=chislit;
if(znamenat)
b=znamenat;
else
{cout<<"Ne mogu podelit na ZERO"<<endl;
b=1;}
}
Rational Rational::operator+(Rational s)
{
Rational Sum;
Sum.a=a*s.b+b*s.a;
Sum.b=b*s.b;
Sum.toNormal();
return Sum;
}
Rational Rational::operator-(Rational s)
{
Rational Sum;
Sum.a=a*s.b-b*s.a;
Sum.b=b*s.b;
Sum.toNormal();
return Sum;
}
Rational Rational::operator*(Rational s)
{
Rational Sum;
Sum.a=a*s.a;
Sum.b=b*s.b;
Sum.toNormal();
return Sum;
}
Rational Rational::operator/(Rational s)
{
Rational Sum;
Sum.a=a*s.b;
Sum.b=b*s.a;
if (s.a==0)
{cout<<"nelzia delit na Zero"<<endl;
}
Sum.toNormal();
return Sum;
}
void Rational::operator+=(Rational s)
{
a=a*s.b+b*s.a;
b=b*s.b;
this->toNormal();
}
bool Rational::operator==(Rational s)
{
if (a==s.a && b==s.b)
return true;
else return false;
}
bool Rational::operator!=(Rational s)
{
if (a==s.a && b==s.b)
return false;
else return true;
}
void Rational::Print(){cout<<a<<"/"<<b<<endl;}
void Rational::Change (int d, int e)
{
a=d;
if (e)
b=e;
else
{cout<<"ne mogu delit na zero"<<endl;
b=1;};
this->toNormal();
}
int main ()
{
Rational R1 (7,2), R2 (9,2), R3;
R3=R1+R2;
R1.Print();
R2.Print();
R3.Print();
cout<<(R1==R2)<<endl;
R1+=R3;
R1.Print();
return 0;
}