Как уже упоминалось в комментариях, вы используете неправильный коэффициент. Также доступно закрытое выражение для значения ряда.
Из последнего члена формулы вы можете прочитать общую форму терминов
a[k] = (x-1)^(2k+1) / ( (2k+1)! * (k+1) ), k = 0,..., n
Отношение двух таких смежных терминов равно
a[k]/a[k-1] = (x-1)^2 / ( (2k+1)*2(k+1) )
, поэтому что модифицированный код, вычисляющий вашу сумму, равен
#include<math.h>
#include<stdio.h>
void main() {
int n, i;
double sum, x,x1s last;
do {
printf("Enter an positive number: ");
scanf("%d", & n);
} while (n<0);
printf("Please enter x: ");
scanf("%lf", & x);
sum = last = x-1;
x1s = last*last;
for (i = 1; i<= n; i++) {
last = last * (x1s / ((2*i+1) * 2 * (i+1)));
sum = sum + last;
}
printf("S = %20.15lf, S_infty = %20.15lf\n", sum, 2*(cosh(x-1)-1)/(x-1));
}