2つの分数同士の足し算をし、その結果を分数で表示するプログラムを作りなさい。
このとき、分子、分母共に最大値が10で、最小値は分母が2、分子が1とする。それらの数値をランダムに発生させ、以下のように結果を表示させなさい。
ただし、計算結果は、分子と分母がきちんと約分されていることとする。
また、分子が分母の数で割り切れる場合は、整数として表示するものとする。
例
1/5 + 2/3 = 13/15 ← 通常のケース
2/3 + 3/8= 1.1/24 ← 帯分数になるケース
1/6 + 1/3= 1/2 ← 約分されるケース
1/2 + 1/2 = 1 ← 整数になるケース
public class Prob8_6 {
/** * @param args */ public static void main(String[] args) { int a = (int) (Math.random() * 10) + 1; int b = (int) (Math.random() * 10) + 2; int c = (int) (Math.random() * 10) + 1; int d = (int) (Math.random() * 10) + 2; System.out.println("分子" + a); System.out.println("分母" + b); System.out.println("分子" + c); System.out.println("分母" + d); int e = (a * b) + (c * d); int o = e; int f = (b * d); int p = f; System.out.println(""); System.out.println("-----------通分-----------"); System.out.println("分子" + e); System.out.println("分母" + f); System.out.println(a + "/" + b + "+" + c + "/" + d + "=" + e + "/" + f); System.out.println(""); System.out.println("----------約分-------------"); if (e < f) { int tmp = e; e = f; f = tmp; } int r = e % f; while (r != 0) { e = f; f = r; r = e % f; } System.out.println("最大公約数" + f); System.out.println("分子" + o / f); System.out.println("分母" + p / f); System.out.println(" "); System.out.println("--------帯分数----------"); if (e % f != 0) { System.out.println(e + "/" + f); } System.out.println(" "); System.out.println("--------整数-------------"); if (e == f) { System.out.println(e); } }
}
上記のように書いてみましたが帯分数と整数表示が何も表示されずどこをなおせばいいのかわからないです。
どなたかご教示いただけないでしょうか?
回答3件
あなたの回答
tips
プレビュー