#include<iostream>
using namespace std;
class Rational
int num,den;
public:
Rational& operator ++();
Rational operator ++(int);
Rational& operator --();
Rational operator --(int);
Rational operator +(Rational);
Rational operator +(int);
friend Rational operator +(int,Rational);
Rational operator -(Rational);
Rational operator -(int);
friend Rational operator -(int,Rational);
Rational operator *(Rational);
friend Rational operator *(int,Rational);
Rational operator *(int);
Rational operator /(Rational);
friend Rational operator /(int,Rational);
Rational operator /(int);
int operator >(Rational);
int operator >(int);
friend int operator >(int,Rational);
int operator <(Rational);
int operator <(int);
friend int operator <(int,Rational);
int operator >=(Rational);
int operator >=(int);
friend int operator >=(int,Rational);
int operator <=(Rational);
int operator <=(int);
friend int operator <=(int,Rational);
int operator ==(Rational);
int operator ==(int);
friend int operator ==(int,Rational);
int operator !=(Rational);
int operator !=(int);
friend int operator !=(int,Rational);
friend void operator >>(istream &,Rational &);
friend void operator <<(ostream &,Rational);
/*void read();
void print();*/
Rational(){}
Rational(int k)
num=k;
den=1;
};
void operator >>(istream &in,Rational &r)
cout<<"Enter numerator and denomonator ";
in>>r.num>>r.den;
void operator <<(ostream &out,Rational r)
out<<r.num<<"/"<<r.den<<endl;
/*void Rational::read()
{
cout<<"Enter Numerator and Denomenator: "<<endl;
cin>>num>>den;
void Rational::print()
cout<<"Rational number is: "<<num<<"/"<<den<<endl;
}*/
Rational Rational::operator +(Rational r)
Rational T;
T.num=num*r.den+den*r.num;
T.den=den*r.den;
return T;
Rational Rational::operator -(Rational r)
Rational T;
T.num=num*r.den-den*r.num;
T.den=den*r.den;
return T;
Rational operator +(int s,Rational r)
Rational t;
t.num=s*r.den+r.num;
t.den=r.den;
return t;
Rational Rational::operator +(int s)
Rational t;
t.num=num+s*den;
t.den=den;
return t;
Rational operator -(int s,Rational r1)
Rational T;
T.num=s*r1.den-r1.num;
T.den=r1.den;
return T;
Rational Rational::operator -(int s)
Rational T;
T.num=num-den*s;
T.den=den;
return T;
Rational Rational::operator *(Rational r)
Rational T;
T.num=num*r.num;
T.den=den*r.den;
return T;
Rational operator *(int s,Rational r1)
Rational T;
T.num=s*r1.num;
T.den=r1.den;
return T;
}
Rational Rational::operator *(int s)
Rational T;
T.num=num*s;
T.den=den;
return T;
Rational Rational::operator /(Rational r)
Rational T;
T.num=num*r.den;
T.den=den*r.num;
return T;
Rational Rational::operator /(int s)
Rational T;
T.num=num;
T.den=den*s;
return T;
Rational operator /(int s,Rational r1)
Rational T;
T.num=s*r1.den;
T.den=r1.num;
return T;
Rational& Rational::operator ++()
{
num=num+den;
den=den;
return *this;
Rational Rational::operator ++(int)
Rational t=*this;
num=num+den;
den=den;
return t;
Rational& Rational::operator --()
num=num-den;
den=den;
return *this;
Rational Rational::operator --(int)
Rational t=*this;
num=num-den;
den=den;
return t;
int Rational::operator >(Rational r)
float f1=float(num)/den;
float f2=float(r.num)/r.den;
if(f1>f2)
return 1;
return 0;
}
int Rational::operator >(int s)
float f1=float(num)/den;
if(f1>s)
return 1;
return 0;
int operator >(int s,Rational r)
float f1=float(r.num)/r.den;
if(s>f1)
return 1;
return 0;
int Rational::operator <(Rational r)
float f1=float(num)/den;
float f2=float(r.num)/r.den;
if(f1<f2)
return 1;
return 0;
int operator <(int s,Rational r1)
float f1=float(r1.num)/r1.den;
if(s<f1)
return 1;
return 0;
int Rational::operator <(int s)
{
float f1=float(num)/den;
if(f1<s)
return 1;
return 0;
int Rational::operator >=(Rational r)
float f1=float(num)/den;
float f2=float(r.num)/r.den;
if(f1>=f2)
return 1;
return 0;
int operator >=(int s,Rational r1)
float f2=float(r1.num)/r1.den;
if(s>=f2)
return 1;
return 0;
int Rational::operator >=(int s)
float f1=float(num)/den;
if(f1>=s)
return 1;
return 0;
int Rational::operator <=(Rational r)
float f1=float(num)/den;
float f2=float(r.num)/r.den;
if(f1<=f2)
return 1;
return 0;
int Rational::operator <=(int s)
float f1=float(num)/den;
if(f1<=s)
return 1;
return 0;
int operator <=(int s,Rational r1)
float f2=float(r1.num)/r1.den;
if(s=f2)
return 1;
return 0;
int Rational::operator ==(Rational r)
float f1=float(num)/den;
float f2=float(r.num)/r.den;
if(f1==f2)
return 1;
return 0;
int operator ==(int s,Rational r1)
float f2=float(r1.num)/r1.den;
if(s==f2)
return 1;
return 0;
int Rational::operator ==(int s)
float f1=float(num)/den;
if(f1==s)
return 1;
return 0;
int Rational::operator !=(Rational r)
float f1=float(num)/den;
float f2=float(r.num)/r.den;
if(f1!=f2)
return 1;
return 0;
int operator !=(int s,Rational r1)
float f2=float(r1.num)/r1.den;
if(s!=f2)
return 1;
return 0;
int Rational::operator !=(int s)
float f1=float(num)/den;
if(f1!=s)
return 1;
return 0;
}
int main()
int k,ch,ch2,ch3;
Rational R1,R2,R5,*R7,*R9;
cin>>R1;
cout<<R1;
cin>>R2;
cout<<R2;
cout<<"Enter Integer: ";
cin>>k;
Rational R3(k);
cout<<R3;
cout<<"---Rational+Rational---"<<endl;
R5=R1+R2;
cout<<R5;
cout<<"---Rational+integer---"<<endl;
R5=R1+k;
cout<<R5;
cout<<"---Integer+Rational---"<<endl;
R5=k+R1;
cout<<R5;
cout<<"---Rational-Rational---"<<endl;
R5=R1-R2;
cout<<R5;
cout<<"---Rational-Integer---"<<endl;
R5=R1-k;
cout<<R5;
cout<<"---Integer-Rational---"<<endl;
R5=k-R1;
cout<<R5;
cout<<"---Rational*Rational---"<<endl;
R5=R1*R2;
cout<<R5;
cout<<"---Integer*Rational---"<<endl;
R5=k*R1;
cout<<R5;
cout<<"---Rational*Integer---"<<endl;
R5=R1*k;
cout<<R5;
cout<<"---Rational/Rational---"<<endl;
R5=R1/R2;
cout<<R5;
cout<<"---Integer/Rational---"<<endl;
R5=k/R1;
cout<<R5;
cout<<"---Rational/Integer---"<<endl;
R5=R1/k;
cout<<R5;
cout<<"--Rational > or < Rational--"<<endl;
if(R1>R2)
cout<<"R1 is greater than R2"<<endl;
else if(R1<R2)
cout<<"R1 is lesser than R2"<<endl;
cout<<"--Rational > or < Integer--"<<endl;
if(R1>k)
cout<<"R1 is greaterthan k"<<endl;
else if(R1<k)
cout<<"R1 is lesserthan k"<<endl;
//else
//cout<<"Equal"<<endl;
cout<<"--Integer > or < Rational--"<<endl;
if(k>R1)
cout<<"k is greaterthan R1"<<endl;
else if(k<R1)
cout<<"k is lesserthan R1"<<endl;
//else
//cout<<"Equal"<<endl;
cout<<"---Rational>=or<=Rational---"<<endl;
if(R1>=R2)
cout<<"R1 is greater or equal to R2"<<endl;
else if(R1<=R2)
cout<<"R1 is lesser or equal to R2"<<endl;
cout<<"---Rational>=or<=Integer---"<<endl;
if(R1>=k)
cout<<"R1 is greater or equal to k"<<endl;
else if(R1<=k)
cout<<"R1 is lesser or equal to k"<<endl;
cout<<"---Integer>=or<=Rational---"<<endl;
if(k>=R1)
cout<<"k is greater or equal to R1"<<endl;
else if(k<=R1)
cout<<"k is lesser or equal to R1"<<endl;
cout<<"--Rational==or!=Rational--"<<endl;
if(R1==R2)
cout<<"R1 is equal to R2"<<endl;
else if(R1!=R2)
cout<<"R1 is not equal to R2"<<endl;
cout<<"--Integer==or!=Rational--"<<endl;
if(k==R1)
cout<<"k is equal to R1"<<endl;
else if(k!=R1)
cout<<"k is not equal to R1"<<endl;
cout<<"--Rational==or!=Integer--"<<endl;
if(R1==k)
cout<<"R1 is equal to k"<<endl;
else if(R1!=k)
cout<<"R1 is not equal to k"<<endl;
R5=++R3;
cout<<"After pre-increment R5 is: "<<R5;
cout<<"After pre-increment R3 is: "<<R3;
R5=R3++;
cout<<"After post-increment R5 is: "<<R5;
cout<<"After post-increment R3 is: "<<R3;
R5=--R3;
cout<<"After pre-decrement R5 is: "<<R5;
cout<<"After pre-decrement R3 is: "<<R3;
R5=R3--;
cout<<"After post-decrement R5 is: "<<R5;
cout<<"After post-decrement R3 is: "<<R3;
Output: