C言語の問題です
二つの仮分数の加算を行うプログラミングである。
x/w+z/y=(xy+wz)/(wy)
1. w,x,y,zは正の整数である。
2.上式のように計算した後、約分して結果を求める。約分には最大公約数を使う。最大公約数の計算は関数gcd(a,b)で以下のアルゴリズム(ユークリッド互除法)で行う。
(1) a,bの大きいほうをp,小さいほうをqとする。
(2) pをqで割った余りをrとする。r=0ならqが解。
r≠0なら、q=r、r=qとして(2)に戻る。
3.計算結果が仮分数ならば、帯分数にして出力する。
次のプログラムの空欄((1)から(3):を埋め、完成させて下さい。
#include <stdio.h>
int gcd(int a, int b)
{
int p,q,r;
if(a<b) {
q=a;
p=b;
}else{
q=b;
p=a;
}
while(q>0){
(1);
p=q;
q=r;
}
(2);
}
main(){
int g,k,m,n,p,q,w,x,y,z;
printf("x/w + z/yの数値を入力して下さい(x w z y)");
scanf("%d %d %d %d, &x,&w,&z,&y");
m= w*y;
n=x*y+w*z;
p=m;
q=n;
g=gcd(p,q);
m=m/g;
n=n/g;
if((3)) {
k = n/m;
n = n - k*m;
if(n==0) printf("%d\n",k);
else printf("%d %d/%d\n",k,n,m);
}
else printf("%d/%d\n",n,m);
}
全く見当がつきません。どなたかお助け下さい。回答を教えてください。
お礼
ありがとうございました。 お返事遅くなりすみません。 これでやっと仕事が一歩前進できます。 ありがとうございました。