# Brüche und gemischte Schreibweise



## dehlen (1. Dez 2010)

Wie kann ich einen Bruch in gemischter Schreibweiser ausgeben?
Danke für Antworten


----------



## maki (1. Dez 2010)

Verschoben und den Titel  verbessert.



> Wie kann ich einen Bruch in gemischter Schreibweiser ausgeben?


Durch Programmierung.


----------



## Michael... (1. Dez 2010)

Wo? Auf der Konsolen ==> 1 1/2? In einem GUI?


----------



## dehlen (1. Dez 2010)

ja also ich hab jetzt 2 textfelder wo die brüche ausgegeben werden... ich wollte einfach noch ein 3 textfeld machen indem dann wenn gemischte schreibweise geht dann halt der bruch reingeschrieben wird.... brauche eigentlich nur die methode die meinen bruch in eine gemischte schreibweise umformt... die würde ich dann in den action listener schreiben sodass ich wenn ich auf kürzen drücke der dass dann in gemischter schreibweise ausgibt....

Also wie gesagt brauche halt nur ne Methode die meinen Bruch in gemischter schreibweise ausgibt


----------



## bone2 (1. Dez 2010)

16/7

16 / 7 = 2
16 % 7 = 2

16/7 = 2 2/7


----------



## Landei (1. Dez 2010)

355/133 

355/113 = 3
355%113 = 16

--> 3 16/113


----------



## dehlen (1. Dez 2010)

OK also müsste ich dann sowas machen ?!

```
private int gemischt() 
        { 
                int z = zähler;  
                int n = nenner;  
                int ganzezahl;
                int bruchzahl;  
 
                while(n!=0)           
                { 
                        z/n = ganzezahl;
                        z%n = zahl;    
            } 
 
           return ganzezahl && bruchzahl/nenner; 
        }
```
aber das kann ja nicht funktionieren ...frage mich nur wieso :autsch:


----------



## bone2 (1. Dez 2010)

versuchst du unten beim return 3 ints mit logischen operatoren zu verknüpfen?


----------



## dehlen (1. Dez 2010)

wahrscheinlich ja... =) 
aber davor stimmt doch auch schon was nicht oder ?! =) auf dem papier ist es einfach aber ...


----------



## Landei (1. Dez 2010)

Du solltest deine Nase mal etwas tiefer in ein Java-Buch stecken...

```
int ganzezahl  = z/n;
int bruchzahl  = z%n;
System.out.println("Gemischte Schreibweise: " + ganzezahl + " " + bruchzahl + "/" + n);
```


----------



## VfL_Freak (1. Dez 2010)

Moin,



dehlen hat gesagt.:


> ```
> private int gemischt()
> {
> int z = zähler;
> ...



hier ein paar Anmerkungen zu Deinem Versuch:

```
private int gemischt() 
        { 
                int z = zähler;  // was ist hier 'zähler' ?? (besser: zaehler!!)
                int n = nenner;  // was ist hier 'nenner' ??
                int ganzezahl = 0;  // tunlichst immer initialiseren
                int bruchzahl = 0;  // tunlichst immer initialiseren  
 
                while(n!=0)           
                { 
                        z/n = ganzezahl; // ja wohl eher andersrum: "ganzezahl = z / n;"
                        z%n = zahl;      // dito
        	} 
 	
	  	// das kann so nicht werden ...
		// (a) machst Du hier eine bool'schen Vergleich (&&) !!
		// (b) zum anderen kannst Du keinen Bruch so als integer darstellen
		//     dies würde höchstens als String gehen (siehe vorheriger Post) !!
        	return ganzezahl && bruchzahl/nenner;
		
        }
```

Gruß
Klaus


----------



## dehlen (1. Dez 2010)

ok vielen dank für die antworten habe es jetzt 
ja habe selber gerade gesehen wie lächerlich mein versuch war....
sry dafür 
also wie gesagt danke .. stand irgendwie auf dem schlauch und habe dann irgend ein unfug produziert 

Edit:
für all die die es interessiert :

Hier nun meine Methode:


```
public Bruch gemischt() { 
            
            int z = zähler;
            int n = nenner;            
            
           int ganzezahl  = z/n;
           int bruchzahl  = z%n;      
           
            {return new Bruch(ganzezahl, bruchzahl);}        
            
        }
```


und den entsprechenden Action Listener zur Aufrufen der Method bei Klick auf einen Button

```
class MischAction implements ActionListener {

        // Diese Methode wird aufgerufen, wenn man auf den Misch-Button klickt //
        @Override
        public void actionPerformed(ActionEvent e) {
         Bruch einBruch = new Bruch (Integer.parseInt(ergebnis1.getText()), Integer.parseInt(ergebnis2.getText())); 
         Bruch gemischterBruch = einBruch.gemischt(); 
         text1.setText(String.valueOf(gemischterBruch.zähler)); 
         text2.setText(String.valueOf(gemischterBruch.nenner));
         text3.setText(String.valueOf(einBruch.nenner)); 
            
}     
}
```


----------



## Landei (1. Dez 2010)

Das ist falsch: [c]return new Bruch(ganzezahl, bruchzahl)[/c]. Ein gemischter Bruch besteht aus *drei* Zahlen: Dem ganzzahligen Anteil, dem Zähler vom Rest und dem Nenner vom Rest (siehe Bruchrechnung ? Wikipedia ). Es ist eine besondere Art der *Darstellung* eines Bruches. Brauchst du das bloß für die Ausgabe, würde ich einfach den String dafür zusammenbasteln. Brauchst du die einzelnen Werte, müsstest du dir zusätzliche Getter in deiner Bruchklasse hinzufügen, etwas  wie 


```
public int getGanzzahligenTeil() { return zähler/nenner; }
public int getGemischtenZähler() { return zähler%nenner; }
//eigentlich überflüssig
public int getGemischtenNenner() { return nenner; }
```

Einen anderen Bruch zur Rückgabe der Werte zu mißbrauchen ist hochgradig verwirrend und gefährlich.


----------



## dehlen (1. Dez 2010)

ja ich weiß das es mathematisch gesehen nicht richtig ist... aber da ich in meinem action listener geschrieben hab das text3 den Text von nenner bekommt sieht es so aus als wäre es richtig... sprich es funktioniert... nur halt nicht mathematisch das ist mir klar


----------



## VfL_Freak (1. Dez 2010)

Moin,



dehlen hat gesagt.:


> Hier nun meine Methode:
> 
> ```
> public Bruch gemischt() {
> ...




hmm - das funktioniert wirklich ? :bahnhof:

Mich irritiert folgendes (siehe Kommentar im Code!) :

```
public Bruch gemischt() 
{ 
    int z = zähler;  // 'zähler' ist nicht deklariert und initialisiert (zudem bitte KEINE Umlaute!!)
    int n = nenner; // 'nenner' ebenso wenig
            
    int ganzezahl  = z/n;
    int bruchzahl  = z%n;
      
    // Hinweis: die geschweiften Klammern waren hier sicher überflüssig!
    // Man kann sicher drüber streiten, ob es richtig ist, hier den Methodenaufruf hinzupacken!
    // Ich würde es aus gründen der Les- und Wartbarkeit nicht machen, sondern so :
    // Bruch myBruch = new Bruch( ganzezahl, bruchzahl ); 
    // return myBruch;
    return new Bruch( ganzezahl, bruchzahl ); 
}
```

Gruß
Klaus


----------



## dehlen (1. Dez 2010)

OK ja habe es jetzt eingesehen das Landei's Lösung schöner ist und habe es geändert
aöso hier meine Methoden :

```
public int getGanzzahligenTeil() { 
                return zähler/nenner; 
            }
            public int getGemischtenZähler() { 
                return zähler%nenner; 
            }

            public int getGemischtenNenner() { 
                return nenner; 
            }
```

und hier mein ActionListener für die Aktion:

```
class MischAction implements ActionListener {

        // Diese Methode wird aufgerufen, wenn man auf den Misch-Button klickt //
        @Override
        public void actionPerformed(ActionEvent e) {
         Bruch einBruch = new Bruch (Integer.parseInt(ergebnis1.getText()), Integer.parseInt(ergebnis2.getText()));
      
         text1.setText(String.valueOf(einBruch.getGanzzahligenTeil()));
         text2.setText(String.valueOf(einBruch.getGemischtenZähler()));
         text3.setText(String.valueOf(einBruch.getGemischtenNenner()));
            
}     
}
```

danke @Landei hab nun dahinter geblickt ;-) habe sogar noch hinzugefügt das die gemischte Schreibweise automatisch gekürzt wird und das ganze funktioniert ;-)


----------

