这是我用来比较两个分数的算法。 uper
是所有分子的数组,under
是所有分母的数组,因此其中一个分数为uper[i]/under[j]
。我想打印所有具有相同分数的位置。它们已经是标准形式
你能想到更好的方法吗?
for(i = 0; i < (length-1); i++)
for(j = i + 1; j < length; j++)
if(uper[i] == uper[j]
if (under[i] == under[j])
printf("%d %d\n", i, j);
答案 0 :(得分:1)
根据您的算法,相同的分数可以视为不同。
要比较a/b
和c/d
这两个分数是否相等,请检查if(a*d==b*c)
所以你的代码必须看起来像
for(i = 0; i < (length-1); i++)
for(j = i + 1; j < length; j++)
if(uper[i]*under[j] == uper[j]*under[i])
printf("%d %d\n", i, j);
答案 1 :(得分:0)
相同分数或相同的等效分数? 3/4相当于6/8。你想比较这种事吗?
如果是这样,您可以使用:
if(upper[i]*under[j] == upper[j]*under[i]) {
printf("%d %d\n", i, j);
}
如果没有,我认为您的解决方案是最佳方式。