uebung02 aufgabe 2
This commit is contained in:
parent
bb54a8a684
commit
7f113c4526
122
uebung02/rationals/Rational.java
Normal file
122
uebung02/rationals/Rational.java
Normal file
@ -0,0 +1,122 @@
|
|||||||
|
package uebung02.rationals;
|
||||||
|
|
||||||
|
public class Rational {
|
||||||
|
private final int num, denom;
|
||||||
|
|
||||||
|
|
||||||
|
Rational(int num, int denom) {
|
||||||
|
if (denom == 0) {
|
||||||
|
throw new IllegalArgumentException("Zahl darf nicht 0 sein!");
|
||||||
|
} else {
|
||||||
|
int gcd = gcDivider(num, denom);
|
||||||
|
|
||||||
|
if (denom < 0) {
|
||||||
|
this.num = -num / gcd;
|
||||||
|
this.denom = -denom / gcd;
|
||||||
|
} else {
|
||||||
|
this.num = num / gcd;
|
||||||
|
this.denom = denom / gcd;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Rational (int num) {
|
||||||
|
this(num, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
private int gcDivider(int x, int y) {
|
||||||
|
//return x == 0 ? y : gcDivider(y % x, x);
|
||||||
|
if (x == 0) {
|
||||||
|
return y;
|
||||||
|
} else {
|
||||||
|
return gcDivider(y % x, x);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getNum() {
|
||||||
|
return num;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getDenom() {
|
||||||
|
return denom;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Rational add(Rational other) {
|
||||||
|
return new Rational(num * other.getDenom() + denom * other.getNum(),
|
||||||
|
denom * other.getDenom());
|
||||||
|
}
|
||||||
|
|
||||||
|
public Rational add(int i) {
|
||||||
|
return add(new Rational(i));
|
||||||
|
}
|
||||||
|
|
||||||
|
public Rational sub(Rational r) {
|
||||||
|
return new Rational(num * r.denom - denom * r.num, denom * r.denom);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Rational sub(int i) {
|
||||||
|
return this.sub(new Rational(i));
|
||||||
|
}
|
||||||
|
|
||||||
|
public Rational mult(Rational r) {
|
||||||
|
return new Rational(num * r.num, denom * r.denom);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Rational mult(int i) {
|
||||||
|
return mult(new Rational(i));
|
||||||
|
}
|
||||||
|
|
||||||
|
public Rational div(Rational r) {
|
||||||
|
return new Rational(num * r.denom, denom * r.num);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Rational div(int i) {
|
||||||
|
return div(new Rational(i));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
if (denom == 1) {
|
||||||
|
return "" + num;
|
||||||
|
} else {
|
||||||
|
return num + "/" + denom;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean lessThan(Rational r) {
|
||||||
|
return this.sub(r).num < 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean lessThan(int i) {
|
||||||
|
return this.sub(i).num < 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean greaterThan(Rational r) {
|
||||||
|
return this.sub(r).num > 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean greaterThan(int i) {
|
||||||
|
return this.sub(i).num > 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean lessThanOrEqual(Rational r) {
|
||||||
|
return this.sub(r).num <= 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean lessThanOrEqual(int i) {
|
||||||
|
return this.sub(i).num <= 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean greaterThanOrEqual(Rational r) {
|
||||||
|
return this.sub(r).num >= 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isEqual(Rational r) {
|
||||||
|
return this.num == r.num && this.denom == r.denom;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isEqual(int i) {
|
||||||
|
return this.isEqual(new Rational(i));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
23
uebung02/rationals/RationalDemo.java
Normal file
23
uebung02/rationals/RationalDemo.java
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
package uebung02.rationals;
|
||||||
|
|
||||||
|
public class RationalDemo {
|
||||||
|
public static void main(String[] args) {
|
||||||
|
Rational r1 = new Rational(1, 2);
|
||||||
|
Rational r2 = new Rational(2, 4);
|
||||||
|
Rational r3 = new Rational(6, 18);
|
||||||
|
Rational r4 = new Rational(3, 12);
|
||||||
|
Rational r5 = new Rational(1);
|
||||||
|
Rational r6 = new Rational(2);
|
||||||
|
Rational r7 = new Rational(4, 3);
|
||||||
|
|
||||||
|
System.out.println("1/2 = " + r1);
|
||||||
|
System.out.println("2/4 = " + r2);
|
||||||
|
System.out.println("6/18 = " + r3);
|
||||||
|
System.out.println("1/2 + 2/4 = " + r1.add(r2));
|
||||||
|
System.out.println("1/2 - 6/18 = " + r1.sub(r3));
|
||||||
|
System.out.println("6/18 * 2/4 = " + r3.mult(r2));
|
||||||
|
System.out.println("1/2 == 2/4 ? " + r1.isEqual(r2));
|
||||||
|
System.out.println("2/4 == 3/12 ? " + r2.isEqual(r4));
|
||||||
|
System.out.println("1 + 2 / (4/3) = " + r5.add(r6.div(r7)));
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user