在c中减少分数 #包括 #包括 int main(){ 系统(“颜色f0”); int a,b,c,d,e,f,g,h,z; printf(“第一分子:”); scanf(“%d”和“&a”); printf(“第一分母:”); scanf(“%d”和“b”); printf(“第二分子:”); scanf(“%d”、&c); printf(“第二分母:”); scanf(“%d”、&d); a=a*d; c=c*b; e=a+c; f=b*d; printf(“简单形式:%d/%d\n”,e,f); 返回0; }
这是我的代码,我想把这个简单的分数降到最低,但不使用数学库堆栈溢出!=/r/家务助理 伪代码算法:在c中减少分数 #包括 #包括 int main(){ 系统(“颜色f0”); int a,b,c,d,e,f,g,h,z; printf(“第一分子:”); scanf(“%d”和“&a”); printf(“第一分母:”); scanf(“%d”和“b”); printf(“第二分子:”); scanf(“%d”、&c); printf(“第二分母:”); scanf(“%d”、&d); a=a*d; c=c*b; e=a+c; f=b*d; printf(“简单形式:%d/%d\n”,e,f); 返回0; },c,reduction,C,Reduction,这是我的代码,我想把这个简单的分数降到最低,但不使用数学库堆栈溢出!=/r/家务助理 伪代码算法: #include <stdio.h> #include <stdlib.h> int main(){ system("color f0"); int a,b,c,d,e,f,g,h,z; printf("First numerator:"); scanf("%d",&a); printf("First denominator:
#include <stdio.h>
#include <stdlib.h>
int main(){
system("color f0");
int a,b,c,d,e,f,g,h,z;
printf("First numerator:");
scanf("%d",&a);
printf("First denominator:");
scanf("%d",&b);
printf("Second numerator:");
scanf("%d",&c);
printf("Second denominator:");
scanf("%d",&d);
a=a*d;
c=c*b;
e=a+c;
f=b*d;
printf("Simple form:%d/%d\n",e,f);
return 0;
}
要检查某物是否为最低值,请执行以下操作:
get a fraction in the form of a/b
while a/b is not in lowest terms:
find a common divisor, k
divide a by k
divide b by k
end while
我将把除数查找器留给您,否则太容易了。您的代码做了一些奇怪的事情: 首先,您要求用户提供两个提名者和两个分母 那你的台词呢
if A == B:
[not lowest terms]
if A is a multiple of B:
[not lowest terms]
if there is a common divisor: // this catches the first two.
[not lowest terms]
else:
[lowest terms]
是多余的,您可以删除它们
第二,你需要排队
printf("Second numerator:");
scanf("%d",&c);
printf("Second denominator:");
scanf("%d",&d);
是可怕的-一个读者(和你)将迷失在你的1个字母的名字数量
那么,为什么不给命名者一个变量命名为nominator
,给分母一个变量命名为nominator
?等等
因此,用以下代码替换整个代码:
a=a*d;
c=c*b;
e=a+c;
f=b*d;
#包括
#包括
int main()
{
整数分子,分母,更小,i;
系统(“颜色f0”);
printf(“分子:”);
scanf(“%d”和分子);
printf(“分母:”);
scanf(“%d”和分母);
printf(“\n原始分数:%d/%d\n”,分子,分母);
//方法:我们从分子和分母中得到较小的数
//并将尝试从中减去1的所有数字作为公约数
更小=分子<分母?分子:分母;
对于(i=较小;i>1;--i)
if(分子%i==0和分母%i==0)
{
分子/=i;
分母/=i;
打破
}
printf(“缩减分数:%d/%d\n”,分子、分母);
返回0;
}
请格式化代码。为什么不使用math.h
?我们不会做作业。@Blacksilver不管怎样,math.h在这里会有什么帮助?我不知道,但你为什么不想用它?这是一项作业,我必须做作业,但我不能做,所以我们不能用数学库。我很确定这是可行的。如果不行,就对我大喊大叫,我会修好的。我会马上回复你们的。最好的希望=e%f;如果(r==0)printf(“简化形式:%d/%d”,e/e,f/e);否则e=f;f=r;r=e%f;printf(“简化格式:%d/%d”,e/r,f/r);返回0;这就是我所做的,但它并没有正确地减轻玛丽安的粗鲁,而是对你的帮助的真棒D
#include <stdio.h>
#include <stdlib.h>
int main()
{
int numerator, denominator, smaller, i;
system("color f0");
printf("Numerator : ");
scanf("%d",&numerator);
printf("Denominator: ");
scanf("%d",&denominator);
printf("\nOriginal fraction: %d/%d\n", numerator, denominator);
// Method: We get the smaller number from numerator and denominator
// and will try all numbers from it decreasing by 1 for common divisor
smaller = numerator < denominator ? numerator : denominator;
for (i = smaller; i > 1; --i)
if (numerator % i == 0 && denominator % i ==0)
{
numerator /= i;
denominator /= i;
break;
}
printf("Reduced fraction : %d/%d\n", numerator, denominator);
return 0;
}