菜鸟问一个C++程序 请高手帮助

来源:百度知道 编辑:UC知道 时间:2024/06/27 16:12:07
建立用于完成分数形式算术运算的类RationalNnmber。编写一个测试该类的程序。
用整数变量表示类的私有数据成员(及分子和分母),给类提供一个能够对所声明的对象初始化的构造函数。为了能够在不提供初始化值的情况下也能对对象初始化,构造函数中应该包含默认的值。构造函数还应该以最简分数的形式储存数据,即2/4应该存为1/2。共有成员函数应该有以下功能:1,两个有利数相加,以最简数形式保存结果。
2,两个有利数相减,以最简数形式保存结果。
3,两个有利数相乘,以最简数形式保存结果。
4,两个有利数相除,以最简数形式保存结果。
5,以a/b形式输出(a是分子b是分母)。
6,以浮点形式输出有理数。

#include <assert.h>
#include <iostream.h>
//最大公约数函数
int gcd(int m,int n){
int r;
if(m==0&&n==0) return 0;
if(m<0) m=-m;
if(n<0) n=-n;
if(m==0) return n;
if(n==0) return m;
r=m%n;
while(r!=0){
m=n;
n=r;
r=m%n;}
return n;}

//符号函数
int sign(int value){
if(value>0) return 1;
else if(value==0) return 0;
else return -1;}

//有理数类的规范说明
class rational{
public:
//构造函数
rational();
rational(int);
rational(int,int);
rational(const rational &);
//访问函数
int num() const;
int den() const;
//赋值函数
void operator =(const rational &);
void operator +=(const r