若葉マークぺらひこ さんが書きました:以下の文で約分できずに困っています。この文ではiが最大公約数のつもりです。
そう思うんだったら、i = x / y; の文の次に
printf("i = %d\n", i); を入れて、コンパイルして、実行し、
分子に 8、分母に 12 を入れてみましょう。
最大公約数になっていますか?
次にやることですが、
while文の中で、x と y の値を変更していますよね。
そこで、printf("x = %d, y = %d\n", x, y); を挿入して、
また実行してみてください。
最大公約数は、y だということが分かります。
x と y は、もう分子と分母ではありません。
だから、
c.bunsi = x / c.kouyaku;
c.bunbo = y / c.kouyaku;
と書くのは間違いです。
c.bunsi = c.bunsi / c.kouyaku;
c.bunbo = c.bunbo / c.kouyaku;
または、
c.bunsi /= c.kouyaku;
c.bunbo /= c.kouyaku;
と書くべきです。
次に、結果を return c で返していますが、
18行目の kouyakusuu(c) の呼び出しでは、結果を受け取っていません。
c = kouyakusuu(c); と書くべきです。
[quote="若葉マークぺらひこ" id=3,19844,149069]以下の文で約分できずに困っています。この文ではiが最大公約数のつもりです。[/quote]
そう思うんだったら、i = x / y; の文の次に
printf("i = %d\n", i); を入れて、コンパイルして、実行し、
分子に 8、分母に 12 を入れてみましょう。
最大公約数になっていますか?
次にやることですが、
while文の中で、x と y の値を変更していますよね。
そこで、printf("x = %d, y = %d\n", x, y); を挿入して、
また実行してみてください。
最大公約数は、y だということが分かります。
x と y は、もう分子と分母ではありません。
だから、
c.bunsi = x / c.kouyaku;
c.bunbo = y / c.kouyaku;
と書くのは間違いです。
c.bunsi = c.bunsi / c.kouyaku;
c.bunbo = c.bunbo / c.kouyaku;
または、
c.bunsi /= c.kouyaku;
c.bunbo /= c.kouyaku;
と書くべきです。
次に、結果を return c で返していますが、
18行目の kouyakusuu(c) の呼び出しでは、結果を受け取っていません。
c = kouyakusuu(c); と書くべきです。