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

Operator Overloading Using Rational Numbers

This document defines a Rational class that represents fractions and overloads various arithmetic and comparison operators to allow rational numbers to be used similarly to built-in numeric types. It includes member functions to perform addition, subtraction, multiplication, division and increment/decrement operations on Rational objects. It also defines extraction and insertion operators for input/output and comparison functions to check if one Rational is greater than or less than another.

Uploaded by

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

Operator Overloading Using Rational Numbers

This document defines a Rational class that represents fractions and overloads various arithmetic and comparison operators to allow rational numbers to be used similarly to built-in numeric types. It includes member functions to perform addition, subtraction, multiplication, division and increment/decrement operations on Rational objects. It also defines extraction and insertion operators for input/output and comparison functions to check if one Rational is greater than or less than another.

Uploaded by

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

#include<iostream>

using namespace std;


class Rational{
int neum ;
int denum;
public :
void read();
void print();
Rational operator +(Rational);
Rational operator -(Rational);
Rational operator *(Rational);
Rational operator /(Rational);
friend istream& operator >>(istream&,Rational&);
friend ostream& operator <<(ostream&,Rational&);
Rational operator ++();
Rational operator ++(int);
Rational operator --();
Rational operator --(int);
Rational operator +(int);
Rational operator -(int);
Rational operator *(int);
Rational operator /(int);
// Rational operator ++();
// Rational operator --();
int isgreater(Rational);
int islesser(Rational);
};

Rational Rational::operator --(){


neum=neum-denum;
return *this;
}
Rational Rational::operator --(int){

Rational t=*this;

neum=neum-denum;
return t;
}
Rational Rational::operator ++(){
neum=neum+denum;
return *this;

}
Rational Rational::operator ++(int){
Rational t=*this;
neum=neum+denum;
return t;
}

ostream& operator <<(ostream &out,Rational &r){


out<<r.neum<<"/"<<r.denum;
}
istream& operator >>(istream &in,Rational &r){
cout<<"enter neum and denum\n";
in>>r.neum;
in>>r.denum;
}
int Rational::islesser(Rational r){
float f1,f2;
f1=neum/denum;
f2=r.neum/r.denum;
if(f1<f2)
return 0;
else
return 1;
}
int Rational::isgreater(Rational r){
float f1,f2;
f1=neum /denum;
f2=r.neum /r.denum;
if(f1>f2)
return 0;
else
return 1;
}
/*
void Rational::read(){
cout<<"enter neum \n";
cin>>neum;
cout<<"enter denum\n";
cin>>denum;
}
void Rational::print(){
cout<<neum<<"/"<<denum<<"\n";
}*/

Rational Rational::operator +(Rational r){


Rational t;

t.neum=neum*r.denum + denum*r.neum;
t.denum=denum*r.denum;
return t;
}
Rational Rational::operator -(Rational r){
Rational t;
t.neum=neum*r.denum - r.neum*denum;
t.denum=denum*r.denum;
return t;
}
Rational Rational::operator *(Rational r){
Rational t;
t.neum=neum*r.neum;
t.denum=denum*r.denum;
return t;
}
Rational Rational::operator /(Rational r){
Rational t;
t.neum =neum*r.denum;
t.denum=denum*r.neum;
return t;
}

Rational Rational::operator +(int i){


Rational t;
t.neum=neum+i*denum;
t.denum=denum;
return t;
}
Rational Rational::operator -(int i){
Rational t;
t.neum=neum-i*denum;
t.denum=denum;
return t;
}

Rational Rational::operator *(int i){


Rational t;
t.neum=neum*i;
t.denum=denum;
return t;
}
Rational Rational::operator /(int i){
Rational t;
t.neum=neum*i;
t.denum=denum;
return t;
}/*
Rational Rational::operator ++(int k){
Rational t;
t.neum=neum+denum;
t.denum=denum;
return t;
}
Rational Rational::operator --(int k){
Rational t;
t.neum=neum-denum;
t.denum=denum;
return t;
}*/
int main(){
Rational r,r1,r2,r3,r4;
// r1.read();
// cout<<"2nd rational number\n";
// r2.read();
cout<<"enter 1st rational num\n";
cin>>r1;
cout<<"enter 2nd rational num\n";
cin>>r2;
cout<<"output:\n";
cout<<r1<<"\n"<<r2<<"\n";

// cout<<"1.rational operations\n"<<"2.overloading\n"<<"increment and


decrement\n"<<"greater or lesse\n";
// do{
// cout<<"enter your option\n";
// cin>>ch;
// switch(ch){*/
// case 1 :
r=r1+r2;
cout<<"addition of 2 rationals:";
cout<<r<<"\n";
r=r1-r2;
cout<<"sub of 2 rationals:";
cout<<r<<"\n";
r=r1*r2;
cout<<"mul of 2 rationals:";
cout<<r<<"\n";
r=r1/r2;
cout<<"division of 2 rationals:";
cout<<r<<"\n";
// break;
// case 2 :
int ele;
cout<<"enter a num \n";
cin>>ele;
r4=r1+ele;
cout<<"additon of ele and rational:";
cout<<r4<<"\n";
r4=r1-ele;
cout<<"sub of ele and rational:";
cout<<r4<<"\n";
r4=r1*ele;
cout<<"mul of ele and rational:";
cout<<r4<<"\n";
r4=r1/ele;
cout<<"div of ele and rational:";
cout<<r4<<"\n";
// break;
// case 3 :

r4=r1++;
cout<<"pre increment of r4:";
cout<<r4<<"\n";
cout<<"pre increment of r1:";
cout<<r1<<"\n";
r4=r1--;
cout<<"post decrement of r4:";
cout<<r4<<"\n";
cout<<"post decrement of r1:";
cout<<r1<<"\n";
// break;
// case 4 :

if(r1.isgreater(r2)==0)
cout<<"r1 is greater \n";
else
cout<<"r2 is greater\n";
if(r1.islesser(r2)==0)
cout<<"r1 is lesser\n";
else
cout<<"r2 is lesser\n";
// break;
// default : cout<<"invalid\n";
// }
// }while(ch<=4);*/
}

You might also like