The answer is to debug your program and step through it to see where it goes wrong.
Eg.
Code:
$ gdb -q ./a.out
Reading symbols from /home/sc/Documents/a.out...done.
(gdb) b 34
Breakpoint 1 at 0x400649: file foo.c, line 34.
(gdb) run
Starting program: /home/sc/Documents/a.out
Enter angle in degrees and number of series: 45 3
Breakpoint 1, sinus (deg=45, numOfSeries=3) at foo.c:34
34 sinusCalc += pow(-1.0, i+1) * ( pow(angle, (2*i-1) ) / fakt( 2*i - 1) );
(gdb) print angle
$1 = 0.785398185
(gdb) print i
$2 = 1
(gdb) print pow(-1.0, i+1)
$3 = 1
(gdb) print pow(angle, (2*i-1))
$4 = 0.785398185
(gdb) print fakt( 2*i - 1)
$5 = 1
(gdb) c
Continuing.
Breakpoint 1, sinus (deg=45, numOfSeries=3) at foo.c:34
34 sinusCalc += pow(-1.0, i+1) * ( pow(angle, (2*i-1) ) / fakt( 2*i - 1) );
(gdb) print pow(-1.0, i+1)
$6 = -1
(gdb) print pow(angle, (2*i-1))
$7 = 0.484473109
(gdb) print fakt( 2*i - 1)
$8 = 6
(gdb) c
Continuing.
Breakpoint 1, sinus (deg=45, numOfSeries=3) at foo.c:34
34 sinusCalc += pow(-1.0, i+1) * ( pow(angle, (2*i-1) ) / fakt( 2*i - 1) );
(gdb) print sinusCalc
$9 = 0.704652667
(gdb) delete 1
(gdb) c
Continuing.
0.707143[Inferior 1 (process 5236) exited normally]
In just 3 iterations, the answer is right to 4 decimal places.
What do you see in your test case which 'fails'?