OOP- Brüche addieren

Guest1

Aktives Mitglied
Hallo zusammen,
könnte mir jmd bitte die Methode "addiere" genauer erklären?
-z.B. mit 1/4 , 5/6
-was ist hier mit bruch.nenner, gemeint ?
-welche zahlen muss ich wo einsetzen damit das auch klappt (also schrittweise)?

public class RationaleZahl8 {
private long nenner; //Nenner des Bruchs
private long zaehler; //Zähler des Bruchs


/**
* Konstruktor für ganze Zahlen, wo der Nenner ist.
* @param zahl
*/

public RationaleZahl8(long zahl){

//durch this.zaehler, this.nenner wird der
//zweite Konstruktor aufgerufen.
this.zaehler= zahl;
this.nenner = 1;

}

/**Konstruktor für ein Bruch
* @param zaehler Zähler eines Bruches.
* @param nenner Nenner eines Bruches.
*/

public RationaleZahl8(long zaehler, long nenner){
//zum kürzen von Brüchen wird durch ggT geteilt.
this.zaehler = zaehler / gibGroestenTeiler(zaehler, nenner);
this.nenner = nenner / gibGroestenTeiler(zaehler, nenner);
}


/*
*Instanzmethode zum addieren von zwei Brüche.
*@param bruch ein neues Objekt(Bruch) vom RationaleZahl
*@return gibt den addierten Wertin einem neuen Objekt vom
*Typ RationaleZahl zurück.
*/

public RationaleZahl8 addiere(RationaleZahl8 bruch){

/*
*Formel zum addieren von zwei brüchen mit gleichnamigen Nenner.
*Beispiel für ein Bruch:
* Zähler = (kgV / nenner) * zähler
* Nenner = kgV(nenner, nenner2)
*/
long kgV= kgV(this.nenner, bruch.nenner);
return new RationaleZahl8((kgV / this.nenner) * this.zaehler +
(kgV / bruch.nenner) * bruch.zaehler,
kgV(this.nenner, bruch.nenner));

}

/**
* Diese Instanzmethode berechnet das kleinste gemeinsame Vielfache.
* @param zaehler Zähler vom Bruch
* @param nenner Nenner des Bruchs
* @Return gibt den kleinsten gemeinsamen Vielfaches zurück.
*/


public long kgV(long zaehler, long nenner){

return(zaehler / gibGroestenTeiler(zaehler, nenner)) * nenner;

}

/**
* Instanzmethode zum ermitteln vom größte gemeinsame Teiler,
* die zum kürzen dient.
* @param zaehler Zähler vom Bruch
* @param nenner Nenner vom Bruch
* @Return gibt den ggT Wert von einem Bruch Objekt.
*/

public long gibGroestenTeiler(long zaehler, long nenner){
/*
ggT(m,n) = m fall n = 0
ggT(n, m % n) sonst
*/

long rest = zaehler % nenner;
return (rest == 0)
? nenner
: gibGroestenTeiler(nenner, rest); //rest -> zaehler % nenner
}


public String gibAlsText(){

return (nenner == 1)
?zaehler + " "
:zaehler + " / " + nenner;
}
}
 
Hier wurde einfach der Algorithmus zum Addieren von zwei Brüchen implementiert. Beide Brüche müssen dabei erstmal soweit erweitert werden, dass sie denselben Nenner haben, damit man ihre Zähler addieren kann. Im optimalen Fall, der hier implementiert ist, rechnet man erst das kleinste gemeinsame Vielfache beider Nenner aus, erweitert die Zähler dann entsprechend und addiert die erweiterten Zähler.
Für 4 und 6 wäre das gemeinsame Vielfache dann 12 (3*4 und 2*6).
`bruch.nenner` ist einfach ein lesender Zugriff auf das nenner Feld des als Parameter übergebenen Bruches.
 
Wie würdest du denn dann hier die ausgelassenen lücken ausfüllen(nur so würde ich das ganze verstehen😳)
Mathematisch verstehe ich das ganze nur die Schritte in Java bringen mich immer durcheinander🙁

Wo werden denn die Brüche erweitert?

return new RationaleZahl (____/ ____)* ____
+(____ /____) * _____, _____;
 
Sag mal, das steht doch direkt im Code. Wo brauchst du denn da jetzt Hilfe? Weißt du nicht, was ein Bezeichner in Java ist und deshalb nicht, was kgV sein soll?
 

Zurück
Oben