### function Why s=-1.#IND ?

#include <iostream>
#include <math.h>
using namespace std;

float fact(int k)
{if (k<0) return 0;
if (k==0) return 1;
return k*fact(k-1);
}

main()
{
float s,h,y,x,i;
h=(1-0.1)/40;
x=h; i=1; s=0;
do
{
s=s+pow(-1,i+1)*(pow(x,2*i+1)*(fact(2*i+1)));
y=sin(x);
cout<<"y"<<i<<"("<<"sin("<<x<<"))="<<y<<endl;
i++;
x+=h;

}
while (i<=40);
std::cout<<"s="<<s<<endl;
}

How can I solve that ? I presume you meant
`/ fact(2*i+1)`
and not
`* fact(2*i+1)`
if you want a nominal sine series. However, this is a dire method and isn't going to produce anything meaningful in your case, as the different terms are being worked out at different values of x.

It should be
`int main()`
A more proactive compiler would prevent your code from running.

The biggest problem of all is that you fall into the trap of so many in trying to sum a power series by working out each term from scratch according to the formula written down on paper.
For example,
`pow(-1,i+1)`
is ridiculous. Just multiply the previous term by -1.
Similarly, working out afresh `pow(x,2*i+1)` is silly. Just introduce another factor `x * x` to the previous term.
Worst of all is using a factorial function: (a) factorials grow excessively fast; and (b) you would end up repeating a whole shed-load of multiplies that you had already done on previous terms. Just divide the previous term by the appropriate new factors.

For the sine series, just
(b) loop in i, multiplying the previous term by `-x*x/(2*i)/(2*i+1.0)`. Add this to the running sum.
 ``1234567891011121314151617181920212223242526272829`` ``````#include #include #include using namespace std; double Sine( double x ) { const double tolerance = 1.0e-30; double term = x, sum = term; // first term double xsq = x * x; // convenience for ( int i = 1; abs( term ) > tolerance; i++ ) { term *= -xsq / ( 2 * i ) / ( 2 * i + 1); // next term as multiple of previous sum += term; // add to sum } return sum; } int main() { const double PI = 4.0 * atan( 1.0 ); cout << fixed << setprecision( 6 ); for ( int deg = 0; deg <= 90; deg += 10 ) { double rad = deg * PI / 180.0; cout << deg << '\t' << Sine( rad ) << '\t' << sin( rad ) << '\n'; } }``````