Hi,
wir sollen ein Programm schreiben, in dem man zwei Eingaben vornnehmen kann, "Zähler: " "Nenner: ", danach wird der Ganzzahlige Anteil, die Vorperiode und Periode ausgegeben. Ich habe anhand dieser Seite, versucht einen Algorithmus dafür aufzustellen:
http://www.arndt-bruenner.de/mathe/scripts/periodenlaenge.htm
Doch irgendwie scheint an meinem Code noch etwas nicht zu stimmen, bei einigen Zahlen läuft alles wunderbar, aber wenn ich z.B. 3/2 berechne, gibt er mir die Vorperiode nicht aus, ich bin schon am verzweifeln, hoffe die Veteranen unter euch, könnten mir da weiterhelfen ohne an meinem Code alles umzukrempeln, weil ich da wirklich viel Zeit für investiert habe:
Hier nochmal der link zum Prog1Tools.zip
http://www.grundkurs-java.de/software.htm
wir sollen ein Programm schreiben, in dem man zwei Eingaben vornnehmen kann, "Zähler: " "Nenner: ", danach wird der Ganzzahlige Anteil, die Vorperiode und Periode ausgegeben. Ich habe anhand dieser Seite, versucht einen Algorithmus dafür aufzustellen:
http://www.arndt-bruenner.de/mathe/scripts/periodenlaenge.htm
Doch irgendwie scheint an meinem Code noch etwas nicht zu stimmen, bei einigen Zahlen läuft alles wunderbar, aber wenn ich z.B. 3/2 berechne, gibt er mir die Vorperiode nicht aus, ich bin schon am verzweifeln, hoffe die Veteranen unter euch, könnten mir da weiterhelfen ohne an meinem Code alles umzukrempeln, weil ich da wirklich viel Zeit für investiert habe:
Code:
import Prog1Tools.IOTools;
class test {
public static void main (String[] args){
int Zaehler, Zaehler2, Zaehler3, Nenner, Nenner2,Potenz = 0,g = 0, b = 0, d = 0, e = 0, f = 0, x = 0, i = 0, Division , a = 0;
String Vorperiode = "", Periode = "";
do{
Zaehler = IOTools.readInteger("Bitte geben Sie den Zaehler ein: ");
}while(Zaehler < 0);
do{
Nenner = IOTools.readInteger("Bitte geben Sie den Nenner ein: ");
}while(Nenner <= 0);
Division = Zaehler / Nenner;
Nenner2 = Nenner;
Zaehler2 = 10;
Zaehler3 = Zaehler;
for(;;){
if (Zaehler3 % 2 != 0 || Nenner2 % 2 != 0 ){
break;
}
Zaehler3 = Zaehler3 / 2;
Nenner2 = Nenner2 / 2;
e++;
}
for(;;){
if (Zaehler3 % 5 != 0 || Nenner2 % 5 != 0 ){
break;
}
Zaehler3 = Zaehler3 / 5;
Nenner2 = Nenner2 / 5;
f++;
}
if(e < f){
x = f;
}
else{
x = e;
}
for(;;){
Potenz++;
if(Zaehler2%Nenner2 == 1){
break;
}
if(Zaehler2%Nenner2 == 0){
Potenz = Potenz - Potenz;
break;
}
Zaehler2 = (Zaehler2%Nenner2)*10;
}
d = Zaehler3;
int[] Safe = new int[x + Potenz + 5 ];
for(;;){
Safe[i] = ((Zaehler3%Nenner2)*10)/Nenner2;
Zaehler3 = (Zaehler3%Nenner2)*10;
i++;
if (Zaehler3 == 0 || i >= Safe.length-1){
break;
}
}
if(x != 0){
for(i=0; i <= x; i++){
Vorperiode = Vorperiode + Safe[i];
}
}
if(Potenz != 0){
for(i= x; i <= x + Potenz-1; i++){
Periode = Periode + Safe[i];
}
}
System.out.println("Ganzzahliger Anteil: " + (Division));
System.out.println("Vorperiode: " + Vorperiode);
System.out.println("Periode: " + Periode);
System.out.println("2en: " + (e));
System.out.println("5en: " + (f));
System.out.println("Nenner gek: " + Nenner2);
System.out.println("Zaehler gek: " + d);
System.out.println("Periodenlänge: " + Potenz);
System.out.println("Vorperiodenlänge: " + x);
System.out.println("Safe.length: " + Safe.length);
System.out.println("Zaehlerdurch2 " + e);
System.out.println("Zaehlerdurch5: " + f);
}
}
Hier nochmal der link zum Prog1Tools.zip
http://www.grundkurs-java.de/software.htm