Witam,
proszę o pomoc. Moim zadaniem jest napisać program z funkcją double mojePi(void), który wylicza z żądaną dokładnością wartość liczby Pi. Do obliczenia przybliżonej wartości Pi wykorzystaj wzór na sumę szeregu: pi/4=1-1/3+1/5-1/7+1/9+...-. Wszystko byłoby do brze gdyby nie warunek: obliczenia należy zakończyć jeżeli wartość bezwzględna z różnicy pomiędzy dwoma kolejnymi wyrazami szeregu jest mniejsza niż założona dokładność. Przyjmij że założona dokładność to stała programowa delta o wartości np. 0.001.
Oto wynik mojej pracy bez uwzględnienia warunku. Ja stworzyłem program, który wylicza liczbę Pi do momentu gdy n=100 000. Czy ktoś pomoże mi zrobić program według powyższego warunku?
#include <stdio.h>
#include <stdlib.h>
double wynik;
double mojePi(void)
{
double pi = 0.0,pi1=1;
double mianownik;
int licznik,n=321321;
double delta=0.001,wynik;
for(licznik = 0; licznik < n; licznik++)
{
if( (licznik %2) ==1)
{
mianownik = (2 * licznik) + 1;
pi-=(4 / mianownik);
}
else
{
mianownik = (2 * licznik) + 1;
pi+=(4 / mianownik);
}
} return pi;
}
int main(int argc, char *argv[])
{
wynik=mojePi();
printf("Liczba pi wynosi: %.15f\n\n\n",wynik);
system("PAUSE");
return 0;
}
Mały błąd w programie w tej linii z deklaracją n, ma być
int licznik,n=100000;