您的位置:首页 > 编程语言 > C语言/C++

a new c++ program

2009-05-26 21:05 99 查看
#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;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: