How to overload the operator
/*i want to overloaded operator in my program. but i dnt know how to add overloaded + operator in this prgram. plzzzzzzzzz help me to solve this problem*/
#include<iostream.h>
class rational{
private :
int numerator, dnomenator ;
void reduction();
public :
rational () //default contructer
{
numerator=dnomenator=1;
}
rational (int num, int dnum) //parameterised constructer
{
numerator=num;dnomenator=dnum;
reduction();
}
void show();
rational operator +();
};
rational rational ::operator +(){
rational sum;
sum=numerator+dnomenator;
return sum;
}
void rational ::show(){
cout<<numerator<<"/"<<dnomenator<<endl;
}
void rational::reduction()//reduces the fraction
{
int largest;
largest = numerator > dnomenator ? numerator : dnomenator;
/*if(numerator>dnomenator)
{
largest=dnomenator;
}
else
{
largest=numerator;
}*/
int gcd = 0; // greatest common divisor
for ( int count= 2; count <= largest; count++ )
if ( numerator % count == 0 && dnomenator % count == 0 )
gcd = count;
if (gcd != 0)
{
numerator /= gcd;
dnomenator /= gcd;
}
}
int main()
{
rational r;
rational c(4,6);
c.show();
return 0;
}
HASHMI007
Junior Poster in Training
60 posts since Feb 2011
Reputation Points: -14
Solved Threads: 1
/*overload +operator in my program it plz cheak this & thisi will be thnkfull if u help me*/
#include<iostream.h>
class rational{
private :
int numerator, dnomenator ;
void reduction();
public :
rational () //default contructer
{
numerator=dnomenator=1;
}
rational (int num, int dnum) //parameterised constructer
{
numerator=num;dnomenator=dnum;
reduction();
}
void show();
rational operator +(rational r );
};
rational rational ::operator +(rational r){
rational sum;
sum.numerator =numerator*sum.numerator;
sum.dnomenator=dnomenator*sum.dnomenator;
cout<<"The sum after multplication is :"<<endl;
return sum;
}
void rational ::show(){
cout<<"The least reduce fraction is : "<<numerator<<"/"<<dnomenator<<endl<<endl;
}
void rational::reduction()//reduces the fraction
{
int largest;
largest = numerator > dnomenator ? numerator : dnomenator;
int gcd = 0; // greatest common divisor
for ( int count= 2; count <= largest; count++ )
if ( numerator % count == 0 && dnomenator % count == 0 )
gcd = count;
if (gcd != 0)
{
numerator /= gcd;
dnomenator /= gcd;
}
}
int main()
{
int numerator,denomenator,num,denom;
rational c;
c.show();
cout<<"Enter the nomirator :";
cin>>num;
cout<<"Enter the denominator : ";
cin>>denom;
rational c1(num,denom);
c1.show();
cout<<"Enter the nomirator :";
cin>>numerator;
cout<<"Enter the denominator : ";
cin>>denomenator;
rational c2(numerator,denomenator);
c2.show();
rational c3;
c3=c1+c2;
c3.show();
return 0;
}
HASHMI007
Junior Poster in Training
60 posts since Feb 2011
Reputation Points: -14
Solved Threads: 1
/*there is little difference b/w your and mine program your program take two value sum up them my program is little difference.1st i take two fraction ,e.g 6/4,9,15
first my program reduce these fraction e.g 6/4 into 3/2 ,9/4 into 3/5 then
add them eg
3/2+9/4
the answer must be 15/4 but my program provide wrong answer. what was wrong with it.... i can't understand the logic of the program.*/
#include<iostream.h>
#include<conio.h>
class rational{
private :
int numerator, dnomenator ;
void reduction();
public :
rational () //default contructer
{
numerator=dnomenator=1;
}
rational (int num, int dnum) //parameterised constructer
{
numerator=num;dnomenator=dnum;
reduction();
}
void show();
rational operator +(rational r );
};
rational rational ::operator +(rational r){
rational sum;
sum.numerator =numerator+sum.numerator;
sum.dnomenator=dnomenator+sum.dnomenator;
cout<<"The sum afer adeng both fraction is :"<<endl;
return sum;
}
void rational ::show(){
cout<<"The least reduce fraction is : "<<numerator<<"/"<<dnomenator<<endl<<endl;
}
void rational::reduction()//reduces the fraction
{
int largest;
largest = numerator > dnomenator ? numerator : dnomenator;
int gcd = 0; // greatest common divisor
for ( int count= 2; count <= largest; count++ )
if ( numerator % count == 0 && dnomenator % count == 0 )
gcd = count;
if (gcd != 0)
{
numerator /= gcd;
dnomenator /= gcd;
}
}
int main()
{
int numerator,denomenator,num,denom;
rational c;
c.show();
cout<<"Enter the nomirator :";
cin>>num;
cout<<"Enter the denominator : ";
cin>>denom;
rational c1(num,denom);
c1.show();
cout<<"Enter the nomirator :";
cin>>numerator;
cout<<"Enter the denominator : ";
cin>>denomenator;
rational c2(numerator,denomenator);
c2.show();
rational c3;
c3=c1+c2;
c3.show();
return 0;
}
HASHMI007
Junior Poster in Training
60 posts since Feb 2011
Reputation Points: -14
Solved Threads: 1
cheak frndzzz
//safwan hashmi
//safwanhashmi_04@yahoo.com
//03-04-2011
//rational.cpp
#include<iostream.h>
#include<conio.h>
class rational{
private :
int numerator, dnomenator ;
void reduction();
public :
rational () //default contructer
{
numerator=dnomenator=1;
}
rational (int num, int dnum) //parameterised constructer
{
numerator=num;dnomenator=dnum;
reduction();
}
void show(){
cout<<"The reduce least frction is : "<<numerator<<"/"<<dnomenator<<endl;
}
rational operator *(rational r) ;
rational operator -(rational r) ;
rational operator +(rational r) ;
rational operator /(rational r) ;
rational operator >(rational r) ;
rational operator ==(rational r) ;
friend ostream & operator<<(ostream& os,rational r)
{
os<<"("<<r.numerator<<"/"<<r.dnomenator<<")";
return os;
}
friend istream & operator>>(istream& is,rational& r)
{
is>>r.numerator>>r.dnomenator;
return is;
}
};
rational rational ::operator *(rational r){
rational multi;
multi.numerator =numerator*r.numerator;
multi.dnomenator=dnomenator*r.dnomenator;
cout<<"\n\nRational no. after multplication";
cout<<"\nFraction after Multiplication is : "<<multi.numerator<<"/"<<multi.dnomenator;
cout<<endl;
}
rational rational ::operator -(rational r) {
rational subtrct;
subtrct.numerator=(numerator*r.dnomenator)-(r.numerator*dnomenator);
subtrct.dnomenator=(dnomenator*r.dnomenator);
cout<<"\n\nRational no. after subtraction";
cout<<"\nFraction after subtruction is : "<<subtrct.numerator<<"/"<<subtrct.dnomenator;
cout<<endl;
}
rational rational ::operator +(rational r) {
rational subtrct;
subtrct.numerator=(numerator*r.dnomenator)+(r.numerator*dnomenator);
subtrct.dnomenator=(dnomenator*r.dnomenator);
cout<<"\nRational no. after Addition";
cout<<"\nFraction after Addition is : "<<subtrct.numerator<<"/"<<subtrct.dnomenator;
cout<<endl;
}
rational rational ::operator /(rational r) {
rational dvd;
dvd.numerator= numerator*r.dnomenator;
dvd.dnomenator=r.numerator*dnomenator;
cout<<"\nRational no. after dividation";
cout <<"\nNumenator ="<<dvd.numerator<<"\nDenominator ="<<dvd.dnomenator;
}
rational rational ::operator >(rational r){
rational lsthn;
lsthn.numerator =numerator>r.numerator;
lsthn.dnomenator=dnomenator>r.dnomenator;
if(numerator>r.numerator && dnomenator>r.dnomenator){
cout<<"\n Fraction "<<numerator<<"/"<<dnomenator<<" > "<<r.numerator<<"/"<<r.dnomenator;
}
else{cout<<"\n Fraction "<<r.numerator<<"/"<<r.dnomenator<<" > "<<numerator<<"/"<<dnomenator;}
}
rational rational ::operator ==(rational r){
rational equalequal;
equalequal.numerator =numerator==r.numerator;
equalequal.dnomenator=dnomenator==r.dnomenator;
if(numerator==r.numerator && dnomenator==r.dnomenator ){cout<<"Both the fractions equAL"<<endl;}
else{cout<<"\nFractions not equal"<<endl;}
}
void rational::reduction()//reduces the fraction
{
int largest;
largest = numerator > dnomenator ? numerator : dnomenator;
int gcd = 0; // greatest common divisor
for ( int count= 2; count <= largest; count++ )
if ( numerator % count == 0 && dnomenator % count == 0 )
gcd = count;
if (gcd != 0)
{
numerator /= gcd;
dnomenator /= gcd;
}
}
int main()
{ char ch;
do{
int numerator,denomenator,num,denom;
rational c;
cout<<"Enter the nomirator :";
cin>>num;
cout<<"Enter the denominator : ";
cin>>denom;
rational c1(num,denom);
c1.show();
cout<<"\nEnter the nomirator :";
cin>>numerator;
cout<<"\nEnter the denominator : ";
cin>>denomenator;
rational c2(numerator,denomenator);
c2.show();
int n;
rational c3;
cout<<"\nEnter your choice (option i.e 1 --> *xcation) : ";
cout<<"\nEnter your choice (option i.e 2 --> -subtrction) : ";
cout<<"\nEnter your choice (option i.e 3 --> +ddition) : ";
cout<<"\nEnter your choice (option i.e 4 --> /Divdation) : ";
cout<<"\nEnter your choice (option i.e 5 --> >gratrthn) : ";
cout<<"\nEnter your choice (option i.e 6 --> ==equalequal) : ";
cout<<"\nEnter your choice (option i.e 7 --> for sream insertion)functionalty : ";
cout<<"\nEnter your choice (option i.e 8 --> for stream extraction)functionalty : ";
cout<<"\nChose any option from a givn instruction obove :";
cin>>n;
switch(n)
{
case 1:
c3=c1*c2;
getch();
clrscr();
break;
case 2:
c3=c1-c2;
getch();
clrscr();
break;
case 3:
c3=c1+c2;
getch();
clrscr();
break ;
case 4:
c3=c1/c2;
getch();
clrscr();
break;
case 5:
c3=c1>c2;
getch();
clrscr();
break;
case 6:
c3=c1==c2;
getch();
clrscr();
break;
case 7:
cout<<c2;
getch();
clrscr();
break;
case 8:
cout<<"\nEnter the nomenator & denominator :";
cin>>c2;
cout<<c2;
c3=c1==c2;
c3=c1>c2;
c3=c1/c2;
c3=c1+c2;
c3=c1-c2;
c3=c1*c2;
getch();
clrscr();
break;
}
cout<<"Press any key to contnue or N key to discontnue :--";
getche();
cout<<endl<<endl;
//clrscr();
}while(ch!='n' || ch!='N') ;
return 0;
}
HASHMI007
Junior Poster in Training
60 posts since Feb 2011
Reputation Points: -14
Solved Threads: 1