0% found this document useful (0 votes)
9 views

Operator Overloading

The document defines a Rational class that represents rational numbers and overloads operators like +, -, *, / to perform arithmetic operations on Rational objects and between Rational objects and integers. It also overloads comparison operators like >, <, ==, != and defines pre/post increment and decrement operators. The main() function demonstrates using the Rational class by performing various arithmetic and comparison operations on Rational objects and printing the results.

Uploaded by

fayazfayi59
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
9 views

Operator Overloading

The document defines a Rational class that represents rational numbers and overloads operators like +, -, *, / to perform arithmetic operations on Rational objects and between Rational objects and integers. It also overloads comparison operators like >, <, ==, != and defines pre/post increment and decrement operators. The main() function demonstrates using the Rational class by performing various arithmetic and comparison operations on Rational objects and printing the results.

Uploaded by

fayazfayi59
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 14

#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:

You might also like