为什么我的reduce功能无法做任何事情?

时间:2016-08-15 02:31:35

标签: c++

对于家庭作业,我制作一个接受用户分数的程序,然后对它们进行不同的算术运算。一个侧面要求是它还必须在显示它之前减少答案。我们必须使用名为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);
}

0 个答案:

没有答案