在C中添加分数:浮点异常

Joa*_*him -1 c floating-point

我正在编写一个使用分数的小程序:

struct fraction
{
     int num;
     int den;
};

typedef struct fraction FRAC;
Run Code Online (Sandbox Code Playgroud)

我使用一个最不常见的多重函数来添加两个分数(之后不再简化它们):

FRAC *add (FRAC a, FRAC b)
{
    int l = lcm(a.den, b.den);
    FRAC *sum;
    sum = malloc(sizeof(FRAC));
    sum->den = l;
    int la = l/a.den;
    int lb = l/b.den;
    sum->num = a.num*la + b.num*lb;
    return sum;
}
Run Code Online (Sandbox Code Playgroud)

给定一个数组FRAC我想用以下函数计算总和:

FRAC* fraction_sum (FRAC *a, unsigned int size)
{
    int i;
    FRAC* sum = malloc(sizeof(FRAC));
    sum->num = 0;
    sum->den = 0;

    for (i = 0; i < size; i++)
    {
        FRAC b = {sum->num, sum->den};
        sum = add(b,a[i]);
    }

    return sum;
}
Run Code Online (Sandbox Code Playgroud)

不过这个表达

print(*fraction_sum(fractions, N));
Run Code Online (Sandbox Code Playgroud)

返回错误

Floating point exception (core dumped)
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?有没有更优雅的方式来做到这一点?

Lew*_*rin 5

看起来你正在除以零.