All pastes #363416 Raw Edit

Miscellany

public text v1 · immutable
#363416 ·published 2007-02-19 11:51 UTC
rendered paste body
public 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;
  }
}