分数类中的运算符重载 (二)

2014-11-24 02:54:26 · 作者: · 浏览: 4
ction::operator*(CFraction &c2)
{
return CFraction(nume*c2.nume,deno*c2.deno);
}
CFraction CFraction::operator/(CFraction &c2)
{
return CFraction(nume*c2.deno,deno*c2.nume);
}
CFraction CFraction::operator~()
{
return CFraction(deno,nume);
}
bool CFraction::operator > (CFraction &c2)
{
if(nume*c2.deno-deno*c2.nume,deno*c2.deno>0)
return true;
else
return false;

}
bool CFraction::operator < (CFraction &c2)
{
if(nume*c2.deno-deno*c2.nume,deno*c2.deno<0)
return true;
else
return false;

}
bool CFraction::operator == (CFraction &c2)
{
if(nume*c2.deno-deno*c2.nume,deno*c2.deno==0)
return true;
else
return false;

}
// 分数化简,使分子分母没有公因子
void CFraction::simplify()
{
int n=gcd(deno, nume);
deno/=n; // 化简
nume/=n;
}

// 求m,n的最大公约数
int gcd(int m, int n) //这个函数可以定义为类的成员函数,也可以为一般函数
{
int r;
if (m while(r=m%n) // 求m,n的最大公约数
{
m=n;
n=r;
}
return n;
}

void CFraction:: display()
{
cout< }


int main()
{
CFraction c1(3,8),c2(7,16),c;
cout<<"c1为:";
c1.display();
cout<<"c2为:";
c2.display();
cout<<"下面比较两个数大小:\n";
if (c1>c2) cout<<"c1>c2"< if (c1 if (c1==c2) cout<<"c1==c2"< c=c1+c2;
cout<<"c1+c2=";
c.simplify();
c.display();
c=c1-c2;
cout<<"c1-c2=";
c.simplify();
c.display();
c=c1*c2;
cout<<"c1*c2=";
c.simplify();
c.display();
c=c1/c2;
cout<<"c1/c2=";
c.simplify();
c.display();
cout< return 0;
}


运行结果:

\