Huhu Leute,
kennt sich von euch jemand mit der Programmiersprache Java aus?
Ich habe ein Problem im gleich folgenden Quelltext:
In der Methode reduce (kürzen eines Bruchs) soll er ja mithilfe des größten gemeinsamen Teilers (ggT) den kleinsten gemeinsamen Nenner finden, um Brüche zu kürzen.
Nur leider macht er das nicht. Ich habe jetzt fast 2 Stunden rumprobiert, aber es will nicht klappen. Da ich dieses Programm bis Sonntag abgeben muss, würde ich mich über Hilfe aus diesem Forum freuen, da mein Betreuer an der Uni dieses Wochenende auch keine Zeit hat.
(Btw: das Programm lässt sich compilieren, es kürzt nur das Ergebnis am Ende nicht)
Das Programm an sich soll nach der Eingabe von 2 Brüchen je nach Auswahl die Summe, Differenz, das Produkt oder den Quotienten davon bestimmen.
Ich poste mal den Quelltext:
import java.util.Scanner; // Import der Eingabe-Funktion
public class Aufgabe_3 { // class
public static int ggT (int a, int b) { // Einbau einer Funktion (größter gemeinsamer Teiler)
int ggt = 1;
int k;
if (a < b) { k = a; } else { k = b; }
if (a%k == 0 && b%k ==0)
ggt = k;
else
for (int i=2; i <= (k/2); i++)
if (a%i == 0 && b%i == 0)
ggt = i;
return ggt;
} // ggT Ende
public static void reduce (int a, int b) { // Kürzen als Funktion
int ggt = ggT (a, b);
a /= ggt;
b /= ggt;
} // reduce Ende
public static int Sum(int a, int b, int c, int d) {
// reduce();
int e = b*d; // gemeinsamer Nenner, gekürzt wird später
int f = a*d + c*b; // Zähler aufaddiert
int sum;
reduce (f, e);
System.out.println("Summe: " + f + " / " + e);
sum = f / e;
return sum;
} // sum Ende
public static int Diff(int a, int b, int c, int d) {
// reduce();
int e = b*d; // gemeinsamer Nenner, gekürzt wird später
int f = a*d - c*b; // Zähler absubtrahiert
int diff;
diff = f / e;
reduce (f, e);
System.out.println("Differenz: " + f + " / " + e);
return diff;
} // diff Ende
public static int Prod(int a, int b, int c, int d) {
int e = a * c; // Multiplizieren der Zähler
int f = b * d; // Multiplizieren der Nenner
int prod;
reduce (e, f);
System.out.println("Produkt: " + e + " / " + f);
prod = e / f;
return prod;
} // prod Ende
public static int Quot(int a, int b, int c, int d) {
int quot = 0;
if (c == 0) { System.out.println("Durch Null darf man nicht teilen!"); } // if Ende
else { // else
int e = a * d; // (a/b) / (c/d) = (a*d)/(b*c)
int f = b * c;
quot = e / f;
reduce (e , f);
System.out.println("Quotient: " + e + " / " + f);
} // else Ende
return quot;
} // quot Ende
public static void main(String[] args) { // main
Scanner in = new Scanner(System.in);
// Nun deklariere ich die Variablen:
int z1; // Zähler der ersten Zahl
int n1; // Nenner der ersten Zahl
int z2;
int n2;
double sum;
double diff;
double prod;
double quot;
int input;
// Nun geht es zur Auswahl.
System.out.println("Mithilfe dieses Programms berechnen Sie die Summe, die Differenz, das Produkt oder den Quotienten zweier rationalen Zahlen.");
do {
System.out.println("Was wollen Sie berechnen?");
System.out.println("Druecken Sie 1 zur Summenberechnung.");
System.out.println("Druecken Sie 2 zur Differenzberechnung.");
System.out.println("Druecken Sie 3 zur Produktberechnung.");
System.out.println("Druecken Sie 4 zur Quotientenberechnung.");
System.out.println("Zum Beenden des Programms druecken Sie einen anderen Knopf.");
input = in.nextInt();
if(input != 1 && input != 2 && input != 3 && input != 4) {
System.exit(0);
}
// Erster Bruch:
System.out.println("Geben Sie bitte den Zaehler der ersten Zahl ein: ");
z1 = in.nextInt();
do {
System.out.println("Geben Sie nun den Nenner (groesser 0!) der ersten Zahl ein: ");
n1 = in.nextInt();
} while (n1 <= 0);
// Zweiter Bruch:
System.out.println("Geben Sie bitte den Zaehler der zweiten Zahl ein: ");
z2 = in.nextInt();
do {
System.out.println("Geben Sie nun den Nenner (groesser 0) der zweiten Zahl ein: ");
n2 = in.nextInt();
} while (n2 <= 0);
// Nun lasse ich per switch-case die möglichen Fälle durchgehen.
switch (input) {
case 1:
Sum(z1, n1, z2, n2);
break;
case 2:
Diff(z1, n1, z2, n2);
break;
case 3:
Prod(z1, n1, z2, n2);
break;
case 4:
Quot(z1, n1, z2, n2);
break;
} // switch Ende
} while (input == 1 || input == 2 || input == 3 || input == 4);
} // main Ende
} // class Ende