c++有理数类运算符重载

//有理数类(Rational),用于执行带分数的运算+、-、*、/
//必须以简化形式存放分数,如:2/4应在对象中存放为1/2。
//可以用有理数格式或双精度格式输出值
//最后编写一个主函数对以上功能进行测试。

#include <iostream>
#include <cstdlib>

using std::cout;
using std::endl;
using std::ostream;

//有理数类(Rational)
_______________________________________________________________
_______________________________________________________________
_______________________________________________________________
......
_______________________________________________________________
_______________________________________________________________
_______________________________________________________________

//有理数类(Rational)的测试程序
int main() {
 //构造函数(默认值0/1,以简化形式存放分数)
 Rational r0;
 cout<<"r0:"<<r0<<endl;
 //分母为0,初始化为默认值
 Rational r1(1,0);
 cout<<"r1:"<<r1<<endl;
 Rational r2(1,2);
 cout<<"r2:"<<r2<<',';
 //以双精度格式输出有理数
 r2.printRationalAsDouble();
 Rational r3(3,6);
 cout<<"r3:"<<r3<<',';
 r3.printRationalAsDouble();
 Rational r4(6,8);
 cout<<"r4:"<<r4<<',';
 r4.printRationalAsDouble();

 cout<<endl;

 r0=Rational(-6,8);
 cout<<"r0:"<<r0<<',';
 r0.printRationalAsDouble();
 r0=Rational(6,-8);
 cout<<"r0:"<<r0<<',';
 r0.printRationalAsDouble();
 r0=Rational(-6,-8);
 cout<<"r0:"<<r0<<',';
 r0.printRationalAsDouble();

 cout<<endl;

 //相加的结果也要以简化形式存放
 Rational r5=r1+r2;
 cout<<"r5=r1+r2="<<r1<<" + "<<r2<<'='<<r5<<endl;
 r5=r2+r3;
 cout<<"r5=r2+r3="<<r2<<" + "<<r3<<'='<<r5<<endl;
 r5=r3+r4;
 cout<<"r5=r3+r4="<<r3<<" + "<<r4<<'='<<r5<<endl;

 cout<<endl;

 //有理数减
 Rational r6=r1-r2;
 cout<<"r6=r1-r2="<<r1<<" - "<<r2<<'='<<r6<<endl;
 r6=r2-r3;
 cout<<"r6=r2-r3="<<r2<<" - "<<r3<<'='<<r6<<endl;
 r6=r3-r4;
 cout<<"r6=r3-r4="<<r3<<" - "<<r4<<'='<<r6<<endl;

 cout<<endl;

 //有理数乘
 Rational r7=r1*r2;
 cout<<"r7=r1*r2="<<r1<<" * "<<r2<<'='<<r7<<endl;
 r7=r2*r3;
 cout<<"r7=r2*r3="<<r2<<" * "<<r3<<'='<<r7<<endl;
 r7=r3*r4;
 cout<<"r7=r3*r4="<<r3<<" * "<<r4<<'='<<r7<<endl;

 cout<<endl;

 //有理数除
 Rational r8;
 r8=r1/r2;
 cout<<"r8=r1/r2="<<r1<<" / "<<r2<<'='<<r8<<endl;
 r8=r2/r3;
 cout<<"r8=r2/r3="<<r2<<" / "<<r3<<'='<<r8<<endl;
 r8=r3/r4;
 cout<<"r8=r3/r4="<<r3<<" / "<<r4<<'='<<r8<<endl;

 return 0;
}

输出样例

r0:0
r1:0
r2:1/2,0.5
r3:1/2,0.5
r4:3/4,0.75

r0:-3/4,-0.75
r0:-3/4,-0.75
r0:3/4,0.75

r5=r1+r2=0 + 1/2=1/2
r5=r2+r3=1/2 + 1/2=1/1
r5=r3+r4=1/2 + 3/4=5/4

r6=r1-r2=0 - 1/2=-1/2
r6=r2-r3=1/2 - 1/2=0
r6=r3-r4=1/2 - 3/4=-1/4

r7=r1*r2=0 * 1/2=0
r7=r2*r3=1/2 * 1/2=1/4
r7=r3*r4=1/2 * 3/4=3/8

r8=r1/r2=0 / 1/2=0
r8=r2/r3=1/2 / 1/2=1/1
r8=r3/r4=1/2 / 3/4=2/3

笨笨