• 締切済み

Java 課題について質問

今日プログラミングの授業で、下記のような課題が出されました。 課題1 1-1 FractionWithSimplify2クラスを,次のように改良した サブクラス(クラス名はFractionWithSimplify4とする)を作成して下さい。 なお、改良にあたってはsuperを使うこと。   ※ 補足説明:FractionWithSimplify2 を改良するには, FractionWithSimplify2を "継承する" FractionWithSimplify4 を作成して下さい.つまり,作成する FractionWithSimplify4 クラスは,FractionWithSimplify2 の子クラスになります.   ・改良点1:コンストラクタの改良     FractionWithSimplify2クラスのコンストラクタをそのまま呼び出す。   ・改良点2:outメソッドの追加    分数の値を表示するメソッドを追加。   ・改良点3:simplifyメソッドの改良    約分前の値と約分後の値を表示するようにsimplifyメソッドを改良。値の表示にはoutメソッドを用いること。   例) FractionWithSimplify4 f = new FractionWithSimplify(2,8); を実行すると、画面に      約分前の値=2/8 約分後の値=1/4  と表示される。 ヒント:上記改良点1~3を同時に実現したFractionWithSimplify4クラスのプログラムリスト(FractionWithSimplify4だけで良い)を書いて下さい。 ・課題2 1-2 1-1で作成したFractionWithSimplify4クラスの動作が正しいことを確認するプログラムを作成し、作成したプログラムのリストを書いて下さい。  課題3 1-2のプログラムの結果を書いて下さい。 一応、 class FractionWithSimplify4 extends FractionWithSimplify2{ FractionWithSimplify4() { bunsi = 0; bunbo = 1; this.simplify(); } FractionWithSimplify4(int n) { bunsi = n; bunbo = 1; this.simplify(); } FractionWithSimplify4(int n, int d) { bunsi = n; bunbo = d; this.simplify(); } void simplify() { int gcd; int abs_n, abs_d; abs_n = StrictMath.abs(this.bunsi); abs_d = StrictMath.abs(this.bunbo); if (abs_d < abs_n) { gcd = abs_n; } else { gcd = abs_d; } do { if (gcd <= 1) return; gcd--; } while ((this.bunbo % gcd !=0) || (this.bunsi % gcd !=0)); this.bunbo /= gcd; this.bunsi /= gcd; if (this.bunbo < 0) { this.bunbo = this.bunbo * -1; this.bunsi = this.bunsi * -1; } } Fraction add(int num) { this.bunsi += this.bunbo * num; this.simplify(); return this; } FractionWithSimplify4 add(FractionWithSimplify4 f) { this.bunsi = this.bunsi * f.bunbo + this.bunbo * f.bunsi; this.bunbo *= f.bunbo; this.simplify(); return this; } } 課題1のFractionWithSimplify2クラスはここまではやったのですけど、よく分かりません。あと課題2がよく分からないのです。 どうか課題1~3の回答をよろしくお願いします。

みんなの回答

noname#49428
noname#49428
回答No.1

FractionWithSimplify2クラスがどういうものか分からないので、どうしようもないです。

lovely1999
質問者

補足

FractionWithSimplify2クラスは、 class FractionWithSimplify2 extend FractionWithSimplify1{ FractionWithSimplify2(){ bunsi = 0; bunbo = 1; this.simplify(); } FractionWithSimplify2(int n){ bunsi = n; bunbo = 1; this.simplify(); } FractionWithSimplify2(int n,int d){ bunsi = n; bunbo = d; this.simplify(); } void simplify(){ int gcd; int abs_n,abs_d; abs_n=StrictMath.abs(this.bunsi); abs_d=StrictMath.abs(this.bunbo); if (abs_d < abs_n){ gcd = abs_n; }else{ gcd = abs_d; } do{ if(gcd <= 1)return; gcd --; }While((this.bunbo % gcd !=0)¦¦(this.bunsi % gcd !=0)); this.bunbo /= gcd; this.bunsi /= gcd; } Fraction add(int num){ this.bunsi += this.bunbo * num; this simplify(); return this; } FractionWithSimplify2 add(FractionWithSimplify2 f){ this.bunsi = this.bunsi * f.bunbo + this bunbo * f.bunsi; this.bunbo *= f.bunbo; this.simplify(); return this; } } のことです。

関連するQ&A