rendered paste bodypublic class Murtoluku3 {
private int osoittaja;
private int nimittaja;
private int kerroOsoittaja;
private int kerroNimittaja;
public Murtoluku3(int os, int nim) {
if (nim == 0)
nim = 1;
if (nim * os < 0) { // Mahdollinen etumerkki tulee aina osoittajaan
this.osoittaja = -Math.abs(os);
this.nimittaja = Math.abs(nim);
} else {
this.osoittaja = Math.abs(os);
this.nimittaja = Math.abs(nim);
}
}
public int kerroOsoittaja() {
return this.osoittaja;
}
public int kerroNimittaja() {
return this.nimittaja;
}
public Murtoluku3 summa(Murtoluku3 toinenLuku) {
Murtoluku3 uusiLuku;
int osoittaja1, osoittaja2, nimittaja1, nimittaja2;
osoittaja1 = this.osoittaja;
osoittaja2 = toinenLuku.kerroOsoittaja();
nimittaja1 = this.nimittaja;
nimittaja2 = toinenLuku.kerroNimittaja();
/* Lavennetaan luvut samannimisiksi */
osoittaja1 *= nimittaja2;
osoittaja2 *= nimittaja1;
nimittaja1 *= nimittaja2;
/* Luodaan uusi murtoluku, johon summa tulee */
uusiLuku = new Murtoluku3(osoittaja1 + osoittaja2, nimittaja1);
return uusiLuku;
}
public Murtoluku3 tulo(Murtoluku3 toinenLuku) {
Murtoluku3 uusiLuku;
uusiLuku = new Murtoluku3(this.osoittaja * toinenLuku.kerroOsoittaja(), this.nimittaja
* toinenLuku.kerroNimittaja());
return uusiLuku;
}
public boolean onkoSama(Murtoluku3 toinenLuku) {
return (this.osoittaja == toinenLuku.kerroOsoittaja() && this.nimittaja == toinenLuku.kerroNimittaja());
}
public boolean onkoYhtasuuri(Murtoluku3 toinenLuku) {
int luku1, luku2, luku3, luku4, syt = 0;
luku1 = Math.abs(this.osoittaja);
luku2 = Math.abs(this.nimittaja);
if (luku1 != 0) {
while (luku1 != luku2)
if (luku1 > luku2)
luku1 = luku1 - luku2;
else
luku2 = luku2 - luku1;
syt = luku1;
/* sievennet��n */
this.osoittaja /= syt;
this.nimittaja /= syt;
}
luku3 = Math.abs(toinenLuku.kerroOsoittaja());
luku4 = Math.abs(toinenLuku.kerroNimittaja());
if (luku3 != 0) {
while (luku3 != luku4)
if (luku3 > luku4)
luku3 = luku3 - luku4;
else
luku4 = luku4 - luku3;
syt = luku3;
/* sievennet��n */
toinenLuku.kerroOsoittaja /= syt;
toinenLuku.kerroNimittaja /= syt;
}
return ((this.osoittaja /= syt) == (toinenLuku.kerroOsoittaja /= syt) &&
(this.nimittaja /= syt) == (toinenLuku.kerroNimittaja /= syt));
}
public void sievenna() {
int luku1, luku2, syt;
/* lasketaan osoittajan ja nimitt�j�n suurin yhteinen tekij� */
luku1 = Math.abs(this.osoittaja);
luku2 = Math.abs(this.nimittaja);
if (luku1 != 0) {
while (luku1 != luku2)
if (luku1 > luku2)
luku1 = luku1 - luku2;
else
luku2 = luku2 - luku1;
syt = luku1;
/* sievennet��n */
this.osoittaja /= syt;
this.nimittaja /= syt;
}
}
public String toString() {
return this.osoittaja + "/" + this.nimittaja;
}
}