void reduce();会员功能可以减少分数

时间:2018-02-20 06:31:09

标签: c++ class operator-overloading

这是我需要编写的成员函数。该功能旨在减少一小部分。 void reduce();

这就是我所拥有的

void reduce()

{
    num /= gcd();
    den /= gcd();
}

提供了gcd功能,所以它没有错误。

它不允许我为其余的类定义包含我的代码,因为它太长了

我的问题是; 为什么我会收到reduce()

的错误

我也试过

void reduce()
// reduce this fraction to simplest form. For instance,
// 2/4 will be reduced to 1/2
{
    int a = gcd();
    den /= a;
    num /= a;
}

我的代码正在测试它:

// Test reduce

f1.reduce(); // f1 is -4/5
f2.reduce(); // f2 is 2/3
if(f1.get_numerator() != -4 || f1.get_denominator() != 5 || f2. 
get_numerator() != 2 || f2.get_denominator() != 3)
{
    cout <<"The reduce function was wrong.\n";
    result -= 0.5;
}

1 个答案:

答案 0 :(得分:0)

假设gcd()返回的值取决于numden,第一行中gcd()返回的值将不同于{返回的值{ {1}}在第二行。

gcd()的返回值存储在局部变量中并使用它。

gcd()

向程序添加一些调试输出:

void reduce()
{
    auto g = gcd();
    num /= g;
    den /= g;
}