# Brüchevergleich



## jonasvi (21. Okt 2016)

Hey Community,
ich studiere kein Informatik und habe ein Verständnisproblem bzw. Frage bzgl. diesen Codeabschnittes:


```
int findeMax() {
int maxIndex = 0;
for (int i = 1; i < brueche.length; i++) {
if (brueche[i].groesser(brueche[maxIndex])) {
maxIndex = i;
}
}
return maxIndex;
}
```

Wir haben schon vorher eine Bruchklasse definiert (mit allen drum und dran, getZaehler, Addieren, Multiplizieren etc.) und wollen mit einen Plotter nun Brüche nach deren Größe sortiert darstellen (Stichwort: SelectionSort-Verfahren, QuickSort-Verfahren, ...).

Ich hoffe dieser Code Abschnitt reicht schon, denn ich weiß nun nicht wie ich bei der Zeile 
	
	
	
	





```
if (brueche[i].groesser(brueche[maxIndex]))
```
 einen Vergleich ziehen soll. Ich soll eine Methode groesser erstellen doch habe ja nur was in den Klammern drin steht als Ausgabe-Wert. Wie könnt ich das nun in der Methode mit brueche_ vergleichen?

Liebe Grüße,
jonasvi_


----------



## Thallius (21. Okt 2016)

Die Methode groesser muss natürlich in deine Bruchklasse. Dort hast du dann Zugriff auf die Attribute (Wahrscheinlich Zaehler und Nenner) beider Brüche und kannst diese vergleichen.


----------



## Jardcore (21. Okt 2016)

```
if (brueche[i].groesser(brueche[maxIndex]))
```
Um das umzusetzen müsste "brueche" ein Array deiner definierten Bruchklasse (Bruch) sein.
In der Art:

```
Bruch[] brueche;
```
Deine Bruchklasse muss dann die Methode

```
public boolean groesser(Bruch bruch) {
    return zahler / nenner > bruch.getZahler() / bruch.getNenner();
}
```
 implementieren.

Um es bisschen besser verstäntlich zu machen:

```
public boolean groesser(Bruch bruch) {
    return this.zahler / this.nenner > bruch.getZahler() / bruch.getNenner();
}
```
.
Hier nochmal das Schlüsselwort "this" hinzugefügt.

Bin kein Mathematiker... aber hoffe die Logik ist richtig XD


----------



## Thallius (21. Okt 2016)

Jardcore hat gesagt.:


> Um es bisschen besser verstäntlich zu machen:
> 
> ```
> public boolean groesser(Bruch bruch) {
> ...



Naja, da Zähler und Nenner (hoffentlich) Integer sind, würde das wohl kaum funktionieren. Da muss man dann schon etwas mehr Hirnschmalz reinstecken wenn man nicht fuschen und alles auf float casten will.

Gruß

Claus


----------



## Jardcore (21. Okt 2016)

Thallius hat gesagt.:


> Naja, da Zähler und Nenner (hoffentlich) Integer sind


Stimmt daran hatte ich nicht gedacht, bin da nur rein mathematisch ran gegangen.
Wo wäre denn hier das Problem alles auf float zu casten?


----------



## jonasvi (21. Okt 2016)

Danke! ;D
Hat nun geklappt, indem man vor jedem get() ein (float) davorschreibt.

Mfg
jonasvi


----------



## Thallius (21. Okt 2016)

Warum sollte ich ein Brüche Programm schreiben wenn ich dann doch wieder die Ungenauigkeiten der Flieskommaberechnung benutze? 
Durch das Casten auf float  wird der komplette Sinn des Programms, nämlich fehlerfrei mit irrationalen Zahlen rechnen zu können aufgehoben.

Gruß

Claus


----------



## JStein52 (21. Okt 2016)

Thallius hat gesagt.:


> Durch das Casten auf float wird der komplette Sinn des Programms, nämlich fehlerfrei mit irrationalen Zahlen rechnen zu können aufgehoben.


Eben. Hauptnenner bestimmen, beide Brüche erweitern und die Zähler vergleichen.
Und im einfachsten Fall einfach über Kreuz mit den Nennern erweitern.


----------

