# Brüche und Näherungswerte



## mobile (5. Dez 2006)

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!




```
//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 (5. Dez 2006)

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

Wenn es vom Typ int[] ist wird bei der Anweisung

```
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

```
double n = (1.0/(a[b] + (1.0/a[c]))) * 1;
```
umgehen


----------



## mobile (5. Dez 2006)

Also das Aray ist vom Typ double


----------



## Leroy42 (5. Dez 2006)

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 (5. Dez 2006)

timkon hat gesagt.:
			
		

> Also das Aray ist vom Typ double



wenn ich es mit Integer mache bekomme ich nach der 2 Berechnung ein Fehler, bzw. er rechnet nur 2 Sachen


----------



## mobile (5. Dez 2006)

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.


----------



## mobile (5. Dez 2006)

Was los mit euch ! Keiner mehr ne Idee?


----------



## DaKo (6. Dez 2006)

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


----------



## gast (6. Dez 2006)

das Problem ist nur, dass zwei Int Arrays nicht gehen, weil ich die Werte die das Array speichern soll nicht richtig angeben kann!


----------



## Leroy42 (6. Dez 2006)

gast hat gesagt.:
			
		

> weil ich die Werte die das Array speichern soll nicht richtig angeben kann!



 :shock:  ???:L  :autsch:


----------

