Brüche kürzen

nihat05

Neues Mitglied
Hallo Leute,
wir haben die Hausaufgabe bekommen einen Rechner für Brüche zu programmieren. Allerdings dürfen wir keine Methoden schreiben, sondern müssen alles in der main schreiben. Nur jetzt habe ich das Problem: ich weiß nicht wie ich das Ergebnis der Brüche kürzen kann. Hat jemand vielleicht ne Idee und kann mir helfen?
 

Nuiton

Bekanntes Mitglied
Was man so alles macht... wenn man Langeweile hat.
fractions.png
 

JStein52

Top Contributor
;);) Oder die Sparversion für arme Schüler die ihre Hausaufgabe machen müssen:

Code:
    private static void bruchKuerzen(int zaehler1, int nenner1, int zaehler2, int nenner2, char operation) {
        int nenner=0, zaehler=0, ggt=0;
      
        switch(operation) {
            case '+':
                        nenner  = nenner1*nenner2;
                        zaehler = zaehler1*nenner2 + zaehler2*nenner1;
                        break;
            case '-':
                        nenner  = nenner1*nenner2;
                        zaehler = zaehler1*nenner2 - zaehler2*nenner1;
                        break;
            case '*':
                        nenner  = nenner1*nenner2;
                        zaehler = zaehler1*zaehler2;
                        break;
            case '/':
                        nenner  = nenner1*zaehler2;
                        zaehler = zaehler1*nenner2;
                        break;
            default :
                        System.out.println("Falsche Operation ");
                      
        }

        // ggt berechnen
        int a, b;
        a = zaehler;
        b = nenner;
        while (true && b !=0 && a!=0) {
            a = a % b;
            if (a == 0) {
                ggt = Math.abs(b);
                break;
            }
            b = b % a;
            if (b == 0) {
                ggt = Math.abs(a);
                break;
            }
        }
      
        // hier noch ueberlegen was du machst wenn der Nenner 0 ist
        System.out.println("Bruch "+zaehler/Math.max(1,ggt)+"/"+nenner/Math.max(1,ggt));
    }
 

JStein52

Top Contributor
Wofür ist denn das true?
;);) Ursprünglich hatte ich dort nur
while (true)
stehen, weil ich den ggt von woanders kopiert hatte. Dann hatte ich gemerkt dass ich in diesem Zusammenhang hier nicht brauchen kann wenn a oder b == 0 wird und habe das hinzugefügt. Kann sein dass dadurch true überflüssig wurde ;);) war aber nicht falsch also habe ich nicht weiter darüber nachgedacht.
 

Oben