对于家庭作业,我制作一个接受用户分数的程序,然后对它们进行不同的算术运算。一个侧面要求是它还必须在显示它之前减少答案。我们必须使用名为reduce()的成员函数。我的问题是,当我调用reduce()函数时,它不会做任何事情。它似乎只是跳过语句然后继续下一个。有人知道怎么了吗? 这是reduce()的成员函数定义:
void Rational::reduce()
{
if(num > denom)
{
int gcf = num;
while(num % gcf != 0 || denom % gcf != 0)
{
gcf--;
}
num /= gcf;
denom /= gcf;
}
else
{
int gcf = denom;
while(num % gcf != 0 || denom % gcf != 0)
{
gcf--;
}
num /= gcf;
denom /= gcf;
}
}
这是我的重载+运算符调用reduce()但没有任何反应。这是问题发生的地方。 normalize()函数(将-n / -d分数更改为n / d)工作正常,但reduce()函数不起作用。然而,这些电话对我来说看起来完全一样,所以我猜测函数定义有问题。
Rational Rational::operator + (Rational f) const
{
Rational temp;
temp.num = (num * f.denom) + (denom * f.num);
temp.denom = denom * f.denom;
temp.normalize();
temp.reduce();
return Rational(temp);
}