I've just started learning c++ this week from the book, c++ from the beginning by jan skansholm, im working througth the exercises and have become stuck on this one:

sin(x) = x - x^3/3! + x^5/5! - x^7/7! + ..................

write a program to calculat sin(x), dont include terms in the sum less than 10^-5.

like I said im new to all of this so don't know where the problem(s) is.
the first program i tried was using a for loop:

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

int main()

{
const double epsilon = 1.0e-5;

double next_term, sum, x;
int fac, k, sign=1;

cout << "enter value for x: ";
cin >> x;

next_term = x;
sum = x;
fac = 1;

for (k=3; fabs(next_term)>=epsilon; k+=2)
{

for (int c=1; c<=k; c++)
fac*=c;

next_term = pow(x,k)/fac;

sum = sum+(next_term*sign);

sign = sign*-1;

}

cout << "sign(x) is:  "  << sum <<endl;

system("pause");
return 0;

}``````

i run the program and get nothing after i type in x.

then i tried a while loop:-

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

int main()

{

double fac, k, next_term, x, sum=0;
int sign=1;

cout<<"enter x:    ";
cin >>x;

fac=1;
k=1;

while(fabs(next_term)>0.0001)
{
for (int c=1; c<=k; c++)
fac*=c;

next_term = ((pow(x,k))/fac)*sign;
sum = sum + next_term;

sign = sign*-1;
k=k+2;
}

cout << "\n\n\nresult is:  " << sum;

system ("pause");
return 0;

}``````

fac=factorial, like 3! = 6

I'm obviously missing something or missing several things, any help would be great, thanks in advanced.

2
Contributors
2
Replies
3
Views
9 Years
Discussion Span
Last Post by twram

You don't reset fac to 1 each time around.
If you print it out, you'll see.

Brilliant thanks alot, I've seem to have it working;

This topic has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.