a new c++ program
#include"iostream.h"
#include"cstdlib"
class Rational
{
private:
int numerator,denominator;
public:
Rational(int nume,int deno);
Rational(int whole_number);
Rational();
void reload();
friend bool operator ==(const Rational& num_1,const Rational& num_2);
friend bool operator <(const Rational& num_1,const Rational& num_2);
friend bool operator <=(const Rational& num_1,const Rational& num_2);
friend bool operator >(const Rational& num_1,const Rational& num_2);
friend bool operator >=(const Rational& num_1,const Rational& num_2);
friend Rational operator +(const Rational& num_1,const Rational& num_2);
friend Rational operator -(const Rational& num_1,const Rational& num_2);
friend Rational operator *(const Rational& num_1,const Rational& num_2);
friend Rational operator /(const Rational& num_1,const Rational& num_2);
friend istream& operator >>(istream& ins,Rational& num);
friend ostream& operator <<(ostream& outs,Rational& num);
};
Rational::Rational(int nume,int deno)
{
int flag,i;
if(deno==0)
{
cout<<"Illegal values for denominator"<<endl;
exit(1);
}
numerator=nume;
denominator=deno;
if ((numerator*denominator)<0)
{
if (denominator<0)
{
denominator=(0-denominator);
numerator=(0-numerator);
}
}
else
{
if (denominator<0)
{
denominator=(0-denominator);
numerator=(0-numerator);
}
}
flag=0;
if ((numerator*denominator)<0)
{
numerator=(0-numerator);
flag=1;
}
for (i=2;(i<=numerator || i<=denominator);i++)
{
if ((denominator%i==0) && (numerator%i==0))
{
numerator=numerator/i;
denominator=denominator/i;
i--;
}
}
if (flag==1)
numerator=(0-numerator);
}
Rational::Rational(int whole_number)
{
numerator=whole_number;
denominator=1;
}
Rational::Rational()
{
numerator=0;
numerator=1;
}
void Rational::reload()
{
int flag=0;
int i;
if ((numerator*denominator)<0)
{
numerator=(0-numerator);
flag=1;
}
for (i=2;(i<=numerator || i<=denominator);i++)
{
if ((denominator%i==0) && (numerator%i==0))
{
numerator=numerator/i;
denominator=denominator/i;
i--;
}
}
if (flag==1)
{
numerator=(0-numerator);
}
}
bool operator ==(const Rational& num_1,const Rational& num_2)
{
return(num_1.numerator*num_2.denominator==num_1.denominator*num_2.numerator);
}
bool operator <(const Rational& num_1,const Rational& num_2)
{
if(num_1.denominator*num_2.denominator>0)
return(num_1.numerator*num_2.denominator<num_1.denominator*num_2.numerator);
else
return(num_1.numerator*num_2.denominator>num_1.denominator*num_2.numerator);
}
bool operator <=(const Rational& num_1,const Rational& num_2)
{
if(num_1.denominator*num_2.denominator>0)
return(num_1.numerator*num_2.denominator<num_1.denominator*num_2.numerator||num_1.numerator*num_2.denominator==num_1.denominator*num_2.numerator);
else
return(num_1.numerator*num_2.denominator>num_1.denominator*num_2.numerator||num_1.numerator*num_2.denominator==num_1.denominator*num_2.numerator);
}
bool operator >(const Rational& num_1,const Rational& num_2)
{
if(num_1.denominator*num_2.denominator>0)
return(num_1.numerator*num_2.denominator>num_1.denominator*num_2.numerator);
else
return(num_1.numerator*num_2.denominator<num_1.denominator*num_2.numerator);
}
bool operator >=(const Rational& num_1,const Rational& num_2)
{
if(num_1.denominator*num_2.denominator>0)
return(num_1.numerator*num_2.denominator>num_1.denominator*num_2.numerator||num_1.numerator*num_2.denominator==num_1.denominator*num_2.numerator);
else
return(num_1.numerator*num_2.denominator<num_1.denominator*num_2.numerator||num_1.numerator*num_2.denominator==num_1.denominator*num_2.numerator);
}
Rational operator +(const Rational& num_1,const Rational& num_2)
{
Rational temp;
temp.numerator=num_1.numerator*num_2.denominator+num_2.numerator*num_1.denominator;
temp.denominator=num_1.denominator*num_2.denominator;
temp.reload();
return temp;
}
Rational operator -(const Rational& num_1,const Rational& num_2)
{
Rational temp;
temp.numerator=num_1.numerator*num_2.denominator-num_2.numerator*num_1.denominator;
temp.denominator=num_1.denominator*num_2.denominator;
temp.reload();
return temp;
}
Rational operator *(const Rational& num_1,const Rational& num_2)
{
Rational temp;
temp.numerator=num_1.numerator*num_2.numerator;
temp.denominator=num_1.denominator*num_2.denominator;
temp.reload();
return temp;
}
Rational operator /(const Rational& num_1,const Rational& num_2)
{
Rational temp;
temp.numerator=num_1.numerator*num_2.denominator;
temp.denominator=num_1.denominator*num_2.numerator;
temp.reload();
return temp;
}
istream& operator >>(istream& ins,Rational& num)
{
ins>>num.numerator>>num.denominator;
return ins;
}
ostream& operator <<(ostream& outs,Rational& num)
{
outs<<"The fraction is "<<num.numerator<<"/"<<num.denominator<<endl;
return outs;
}
int main()
{
int x,y;
cout<<"Please enter the numerator and denominator of fraction"<<endl;
cin>>x>>y;
Rational fraction_1(1,2),fraction_2(x,y),fraction_3,fraction_4;
cout<<fraction_1;
fraction_3=fraction_1+fraction_2;
fraction_4=fraction_1*fraction_2;
cout<<fraction_2;
cout<<fraction_3;
cout<<fraction_4;
return 0;
}