我寫了一個小程序與分數的工作:加成分數:浮點異常
struct fraction
{
int num;
int den;
};
typedef struct fraction FRAC;
我用最小公倍數函數中添加兩個部分(無事後simpilfying他們):
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;
}
鑑於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;
}
但是這種表達
print(*fraction_sum(fractions, N));
返回錯誤
Floating point exception (core dumped)
任何想法?有沒有更優雅的方式來做到這一點?
也許你的初始分母應該是1?現在你的初始分數是0/0 ... 0/1會更有意義。 – FatalError