关于函数的C ++代码中的错误

时间:2017-11-27 06:44:36

标签: c++

有人可以解释为什么我会收到以下代码的错误(我已经附加了代码和错误,只需向下滚动)。其实这是一个功课问题。我之前已经成功地用Python完成了这个问题,现在我被要求用c ++做同样的问题,我基本上只是复制粘贴并改变了语法,但它并没有以某种方式工作。

CODE

#include <iostream>
using namespace std;

float reduce(int num,float denom)
{
    float a;
    if (num>denom)
    {
        a = denom;
    }
    if (denom>num)
    {
        a = num;
    }
    float sol = 0;
    while (a>1)
    {
        if ( (num<=0) || (denom<=0) )
            a = -10;
        if ( (num%a == 0) && (denom%a == 0) )
        {
            sol = 1;
            a = -10;
        }
        a-=1;
    }
    return sol;
}

int main()
{
    float num;float denum;
    cout<<"Numerator: ";cin>>num;
    cout<<"Denominator: ";cin>>denum;
    float sol = Reduce(num,denom);
    cout<<sol;

}

错误

[Error] invalid operands of types 'int' and 'float' to binary 'operator%'
[Error] invalid operands of types 'float' and 'float' to binary 'operator%'

1 个答案:

答案 0 :(得分:1)

你不能一起获得float和int对象的mod。如果你需要整数mod那么

float a = 10.0;
int b = 10;
// parse float to int and get the mod
int mod = b % ((int)a); 

如果你想要绝对mod

float a = 10.5;
int b = 100;
int d = b / a;
float mod = b - (a * d);

根据建议编辑:
使用fmod函数。在<math.h>中定义 fmod reference