Różnica w programie z funkcją i bez funkcji

0

Nie rozumiem dlaczego występuje tu różnica pomiędzy działaniem obu programów. Czy ktoś mógłby mi to wytłumaczyć? Pierwszy z nich podaje prawidłową odpowiedź jaką jest 1, drugi natomiast zawsze wskazuje zero, niewazne jakiego ustawi się x'a. (program z założenia miał liczyć wartość sinusa za pomocą rozwinięcia w szereg. Z góry dziękuję za odpowiedź :)

Pierwszy program:

 
#include <stdio.h>

double szereg(double x)
{
double s, w;
int i;
s=x;
w=x;

for(i=1;i<=100;i++)
{
 w=-w*x*x/(2*i*(2*i+1));
 s=s+w;
}
return s;
}


int main()
{
double x;
x=1.57;

 printf("%.4lf\n",szereg(x));
}

Drugi program:

#include <stdio.h>


int main()
{
double x;
double s, w;
int i;
x=1.57;
s=x;
w=x;

for(i=1;i<=100;i++)
{
 w=-w*x*x/(2*i*(2*i+1));
 s=s+w;
}

 printf("%.4lf\n", &s);
}
 
3
printf("%.4lf\n", s);

1 użytkowników online, w tym zalogowanych: 0, gości: 1