12! is larger than can fit into a 32-bit
int, so such values will overflow and therefore won’t return what you expect.
Instead of computing the full factorial each time, take a look at each term in the sequence relative to the previous one. For any given term, the next one is
-((x*x)/(flag_2*(flag_2-1)) times the previous one. So start with a term of
x, then multiply by that factor for each successive term.
There’s also a trick to calculating the result to the precision of a
double without knowing how many terms you need. I’ll leave that as an exercise to the reader.