私は構造体と自作関数を使って分数を約分するプログラムを作ろうとしています(何故そんな面倒なやり方をするのかはどうか聞かないで下さい)。
そこでユークリッドの互除法を使おうとしているのですが、以下の文で約分できずに困っています。この文ではiが最大公約数のつもりです。
自分ではこれで動くと思っているのに動きません。どうか間違っている箇所を教えて下さい。
コンパイラ(と言うものなのでしょうか?)はpaiza.IOです。
#include <stdio.h>
typedef struct {
int bunsi;
int bunbo;
int kouyaku;
}bunsuu;
bunsuu kouyakusuu(bunsuu c);
int main() {
bunsuu c;
int a;
printf("分子を入力して下さい。\n");
scanf("%d", &c.bunsi);
printf("分母を入力して下さい。\n");
scanf("%d", &c.bunbo);
kouyakusuu(c);
printf("結果は%d\n --\n %d です。\n",c.bunsi,c.bunbo);
scanf("%d",&a);
return 0;
}
bunsuu kouyakusuu(bunsuu c) {
int i;
int x=c.bunsi;
int y=c.bunbo;
if (x<y) {
i = x;
x = y;
y = i;
}
i = x % y;
while (i != 0) {
x = y;
y = i;
i = x % y;
}
i = x / y;
c.kouyaku = i;
c.bunsi = x / c.kouyaku;
c.bunbo = y / c.kouyaku;
return c;
}