Witam, dostałem zadania polegające na wykonaniu programu majacego liczyc cos takiego:
x-x^3^/3*1!+x^5^/5*2!-x^7^/7*3!+...
(fixed - msm)
Punktem przerwania petli ma byc dokladnosc wpisana na poczatku programu przez uzytkownika, x nalezy <0;1>
Kod:
#include <stdio.h>
#include <math.h>
#include <float.h>
int main()
{
double x, dokladnosc;
printf("Podaj wartosc x nalezacego <0;1> i dokladnosc (wieksza niz DBL_EPSILON)\n");
scanf("%lf %lf", &x, &dokladnosc);
if ((x<0) || (x>1))
{
printf("Zle dane");
return 1;
}
if (x==0)
{
printf("Wartosc calki wynosi 0");
return 0;
}
else
{
double a=x, wynik=x;
int i=1;
do
{
a=((-a*x*x)/(i*((2*i+1)/(2*i-1))));
wynik=wynik+a;
i+=1;
}
while (fabs(a)>dokladnosc);
printf ("%.16lf", wynik);
return 0;
}
}
Lecz niestety wyniki uzyskiwane recznie nie zgadzaja sie z liczonymi w programie, prosze o pomoc w znalezieniu bledu.
! - oznacza oczywiscie silnie, ^ potege, zakazane jest niestety uzycie pow czy zadeklarowanie f. liczacej silnie, przez co zmuszony jestem zmienic swoje rozwiazane, lecz nie moge znalezc w nim bledu.
Pozdrawiam