Brüche und Näherungswerte

Status
Nicht offen für weitere Antworten.

mobile

Bekanntes Mitglied
Hi Leute,

habe eine drigende Frage. Muss für die Uni ein kleines Programm schreiben. In dem Programm habe ich eine Eingabe Zahl als Bruch BSP: 266 / 115. Nun soll ich die Kettenbruchentwicklung ausrechnen, dass ist mir mit dem euklidischen Algorithmus auch gelungen. Die Werte werden in ein Array gespeichert und in dieser Form wieder ausgegeben: [2,3,5,7]. So weit so gut. Allerdings hat mein Array 10 Elemente, also habe ich ja ab dem 5 Element nur Nullen, die hab ich mit einer if Anweisung einfach nicht mit ausgegeben. So! So weit ist ja noch alles klar.

Jetzt kommts. Ich muss jetzt noch den Näherungswert für jeden Schritt angeben. Die Werte habe ich ja in meinem Array gespeichert und kann diese auch auslesen. Wie ich den Kehrwert bilde weiß ich auch, aber irgendwie gibt er mir immer was falsches aus. Außerdem soll ich die Zahlen dann auch noch in der Form 266/115, 2/1, 37/16 usw darstellen und nicht als zB double Wert ausgerechnet. Im Moment sieht das entscheidene KOnstrukt so aus, aber das geht leider nicht!



Code:
//Berechnung der Näherungswerte
		System.out.println("\nDie Näherungswerte lauten: ");
		System.out.println((int)a[0] + "/" + 1);
		for(int b = 1,c = 2; a[b] != 0; b++,c++) {
			if(a[b] != 0 ) {
				double n = (1/(a[b] + (1/a[c]))) * 1;
				double n2= a[0] + n;
				System.out.println(n2);
			}
			else {
				break;
			}
		}

Hoffe, dass mir einer von euch Genies :) helfen kann! Würd mich freuen, danke!

Gruß
timkon
 

Leroy42

Top Contributor
Von was für einen Datentyp ist denn das Array a?

Wenn es vom Typ int[] ist wird bei der Anweisung
Code:
double n = (1/(a[b] + (1/a[c]))) * 1;
zuerst im Integerzahlenbereich gerechnet (1/3 = 0) und
dann das Integerergebnis in double geändert.

Das kann man durch
Code:
double n = (1.0/(a[b] + (1.0/a[c]))) * 1;
umgehen
 

Leroy42

Top Contributor
Dann wäre das schon mal geklärt. :shock:

Was heißt denn er gibt was falsches aus.
Was erwartest du denn und was gibt er aus?

Poste mal ein Beispiel.
 

mobile

Bekanntes Mitglied
also ausgeben soll er duch das Feld [2,3,5,7]

2/1; 7/3; 37/16; 266/115

Mit 266/115 beginnt das Programm auch.

Mit der Formel die ich da habe berechnet er nur 37/16 richtig gibt es allerdings als 2,31... aus :-(

Der Rest wird falsch berechnet. Wenn ich es per Hand ausrechne so wie ich mir die Formel gedacht habe geht es aber irgendwie scheint wohl bei der Auswahl der Felder was nicht zu passen.
 

DaKo

Bekanntes Mitglied
Hi timkon,

zum Thema Brüche ausgeben:

Wenn du zwingend den Bruch ausgeben willst/musst, wäre mein erster Gedanke 2 Integer-Arrays zu verwenden. Eins für den Zähler und eins für den Nenner.

Gruß
Daniel
 
G

gast

Gast
das Problem ist nur, dass zwei Int Arrays nicht gehen, weil ich die Werte die das Array speichern soll nicht richtig angeben kann!
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
X Brüche kürzen mittels Methoden und ggT Allgemeine Java-Themen 15

Ähnliche Java Themen

Neue Themen


Oben