while schleife funktioniert nicht
-
Mein Programm durchläuft die Schleife nur einmal und gibt dann aus. Was mach ich falsch? (Programm zum Berechnen von PI)
#include <stdio.h> main(){ double fsum = 1.0, fsumold = 0.0, s = 1.0; int n = 0; do { s = s * ((n+1)/(2*n+3)); fsumold = fsum ; fsum = fsum + s ; s++ ; }while (fsumold != fsum); fsum = fsum * 2.0 ; printf("%f\n%i\n",fsum,s); }
-
(n+1)/(2*n+3) ist 0 (Integerdivision) -> s ist 0 -> fsum == fsumold.
-
Was kann ich da gegen tun?
-
n als double definieren. Oder an der Stelle, wo die Division stattfindet, mindestens einen Operanden auf double casten:
s = s * ((double)(n+1)/(2*n+3));Und mal den Algorithmus überprüfen, es ist mir nicht plausibel, dass n die ganze Zeit nicht verändert wird.
-
ja, danke, aber irgendwie klappt das nicht.
Egal ob ich n als double mach oder unten caste, als Ergebniss gibt mein Programm gar nichts mehr aus.
da is nur der schwarze kasten und der ist leer.
-
man bin ich blöd, jetzt hab ichs.
ich hab einmal aus versehen s statt n geschrieben.Vielen Dank
das wars dann