Hallo,
#include
#include
int main() {
int n;
double sum, partialsum, d, abs, R;
sum = 0;
R = 0;
printf(„Eingabe des maximalen Restfehlers: „);
scanf(“%lf“, &d);
Du initialiserst weder n noch abs.
> while(abs
Es ist eine relativ dumme Idee, hohe Potenzen einer Fließkommazahl zu bilden.
> sum = sum + 4\*partialsum;
> R = R + partialsum;
Die Variable, die du partialsum genannt hast, hält das aktuelle Glied der Berechnung, nicht die Partialsumme (die ist in R).
> abs = fabs(R);
Du nimmst nicht den Betrag der Differenz von aktuellen Wert und Zielwert, sondern nur den Betrag. Damit macht die Abbruchbedingung keinen Sinn mehr.
Ich habe mal eine funktionierende Version angehängt:
#include
#include
int main() {
int n = 0;
double partialsum = 0.0, d;
int sign = 1;
printf("Eingabe des maximalen Restfehlers: ");
scanf("%lf", &d);
printf("Limit: %f\n", d);
while(fabs(3.1415926 - partialsum) \> d) {
double current = 4.0 \* (double) sign / (2.0 \* (double) n + 1.0);
partialsum += current;
printf("%f\n", partialsum);
n++;
sign = -sign;
}
printf("\nPI laut Leibniz Reihe: \n\t%f\n", partialsum);
printf("Anzahl n: \n\t%i\n", n);
return 0;
}
Grüße,
Moritz