All pastes #775983 Raw Edit

Etwas

public text v1 · immutable
·published 2007-11-15 20:27 UTC
rendered paste body
/**
* Rationale Zahl
*/
public class RationaleZahl {

	/**
	* Leerer Konstruktor, legt die Zahl 0/0 an
	*/
	public RationaleZahl() {
		// Implementieren sie diese Methode
		nenner = 0;
		zaehler = 0;
	}
	
	/**
	* Konstruktor, legt die Zahl i/1 an
	*/
	public RationaleZahl(int i) {
		// Implementieren sie diese Methode
		zaehler = i;
		nenner = 1;
		
		
	}
	
	/**
	* Konstruktor, legt die Zahl z/n an
	*/	
	public RationaleZahl(int z, int n) {
		// Implementieren sie diese Methode
		zaehler=z;
		nenner=n;
		
	}
	
	/**
	* Kopier-Konstruktor, kopiert die Werte other.zaehler und other.nenner.
	*/
	public RationaleZahl(RationaleZahl other) {
		// Implementieren sie diese Methode
		other = new RationaleZahl(zaehler, nenner);
	}
	
	/** 
	 * Addiert 'other' auf die aktuelle Zahl INPLACE, d.h. der Inhalt der aktuellen Zahl wird veraendert. Der Wert der Zahl 'other' DARF jedoch nicht veraendert werden!
	 */
	public void add(RationaleZahl other) {
		// Implementieren sie diese Methode
		int SumZaehler = zaehler*other.nenner+other.zaehler*nenner;
		int SumNenner = nenner*other.nenner;
		RationaleZahl sum = new RationaleZahl(SumZaehler, SumNenner);
		sum.kuerzen();
	
	}

	/** 
	 * Addiert die Konstante 'zahl' auf die aktuelle Zahl INPLACE, d.h. der Inhalt der aktuellen Zahl wird veraendert.
	 */
	public void add(int zahl) {		
		// Implementieren sie diese Methode
		int SumZaehler=zaehler+zahl*nenner;
		int SumNenner= nenner;
		RationaleZahl sum = new RationaleZahl(SumZaehler, SumNenner);
	}	

	/** 
	 * Subtrahiert 'other' von der aktuelle Zahl INPLACE, d.h. der Inhalt der aktuellen Zahl wird veraendert. Der Wert der Zahl 'other' DARF jedoch nicht veraendert werden!
	 */
	public void sub(RationaleZahl other) {
		// Implementieren sie diese Methode
		int SubZaehler = zaehler*other.nenner-other.zaehler*nenner;
		int SubNenner = nenner*other.nenner;
		RationaleZahl sub = new RationaleZahl(SubZaehler, SubNenner);
		sub.kuerzen();
	}
	
	/** 
	 * Subtrahiert die Konstante 'zahl' von der aktuelle Zahl INPLACE, d.h. der Inhalt der aktuellen Zahl wird veraendert.
	 */
	public void sub(int zahl) {
		// Implementieren sie diese Methode
		int SubZaehler=zaehler-zahl*nenner;
		int SubNenner= nenner;
		RationaleZahl sub = new RationaleZahl(SubZaehler, SubNenner);
	}
	
	/** 
	 * Multipliziert die Rationale Zahl 'other' auf die aktuelle Zahl INPLACE, d.h. der Inhalt der aktuellen Zahl wird veraendert. Der Wert der Zahl 'other' DARF jedoch nicht veraendert werden!
	 */
	public void mul(RationaleZahl other) {
		// Implementieren sie diese Methode
		int ProdZaehler = zaehler*other.zaehler;
		int ProdNenner = nenner*other.nenner;
		RationaleZahl prod = new RationaleZahl(ProdZaehler, ProdNenner);
		prod.kuerzen();
	}

	/** 
	 * Multipliziert aktuelle Zahl mit der Konstante 'zahl' INPLACE, d.h. der Inhalt der aktuellen Zahl wird veraendert.
	 */
	public void mul(int zahl) {
		// Implementieren sie diese Methode
		int ProdZaehler = zaehler*zahl;
		int ProdNenner = nenner;
		RationaleZahl prod = new RationaleZahl(ProdZaehler, ProdNenner);
		prod.kuerzen();
	}
	
	/** 
	 * Dividiert die aktuelle Zahl durch die Rationalen Zahl 'other' INPLACE, d.h. der Inhalt der aktuellen Zahl wird veraendert. Der Wert der Zahl 'other' DARF jedoch nicht veraendert werden!
	 */
	public void div(RationaleZahl other) {
		// Implementieren sie diese Methode
		int QuotZaehler = zaehler*other.nenner;
		int QuotNenner = nenner*other.zaehler;
		RationaleZahl Quot = new RationaleZahl(QuotZaehler, QuotNenner);
		Quot.kuerzen();
	}
	
	/** 
	 * Dividiert die aktuelle Zahl durch die Konstante 'zahl' INPLACE, d.h. der Inhalt der aktuellen Zahl wird veraendert.
	 */
	public void div(int zahl) {
		// Implementieren sie diese Methode
		int QuotZaehler = zaehler;
		int QuotNenner = nenner*zahl;
		RationaleZahl Quot = new RationaleZahl(QuotZaehler, QuotNenner);
		Quot.kuerzen();
	}
	
	/** 
	 * Gibt die Zahl aus
	 */	
	public void printRat() {
		System.out.println("(" + zaehler + "/" + nenner + ")");
	}
	
	/** 
	 * Konvertiert die Zahl in ein double
	 */		
	public double nachDouble() {
		return (double)zaehler/(double)nenner;
	}
	
	/** 
	 * Berechnet den groessten gemeinsamen Teiler der Zahlen 'zahl1' und 'zahl2'
	 */
	public static int ggT(int zahl1, int zahl2) {
		// Implementieren sie diese Methode
		if(zahl1==zahl2)
			return zahl1;
		else if(zahl1<zahl2)
			return ggT(zahl1, zahl2-zahl1);
		else
			return ggT(zahl1-zahl2, zahl2);
	}
	
	/** 
	 * Berechnet das kleinste gemeinsame Vielfache der Zahlen 'zahl1' und 'zahl2'
	 */
   	 public static int kgV(int zahl1, int zahl2) { 
		// Implementieren sie diese Methode
		while(zahl1 != zahl2){
			if(zahl1<zahl2){
				zahl1 += zahl1;
			}
			else{
				zahl2 += zahl2;
			}	
		}
		return zahl1;
	 }
	
	/** 
	 * Kuerzt die aktuelle Zahl, muss in den relevanten Rechenoperationen aufgerufen werden!
	 */	
	private void kuerzen() {
		// Implementieren sie diese Methode
		int x = ggT(nenner, zaehler);
		int KueZaehler = zaehler/x;
		int KueNenner = nenner/x;
		RationaleZahl kue = new RationaleZahl(KueZaehler, KueNenner);
		
	}
	
	private int zaehler;
	private int nenner;
}