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;
}
#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;
}
相关文章推荐
- malloc/free and new/delete in C++
- C++用new和不用new创建类对象
- c++: new, delete, malloc, free的匹配使用
- C++中的new/delete与operator new/operator delete
- C++用new和不用new创建类对象区别
- C++用new和不用new创建类对象区别
- C++ How to Program, 7/e (C++大学教程 第7版) 英文原版 全彩页
- C++中的new与delete总结
- 重载new和delete方法实现C++内存安全
- 深入C++的new
- c++new and delete
- Self Summary: C++函数返回引用和指针的问题,局部对象与new对象的问题
- C++ 强制类型转换 static_cast<new_type>(expression)
- C++中new的用法
- C++内存分配秘籍—new,malloc,GlobalAlloc详解
- c++ 的new 数组操作
- C++中的new VS C语言中的malloc
- more-effective-c++ 序列1 new和delete的测试
- C++中的内存管理(new、delete、内存泄漏)
- C++中delete, new以及new [], delete[]操作符内幕