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;
}
}
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;
}
}