Не могу найти ошибку, вычисления суммы ряда и контрольного выражения

#include <math.h>
#include <windows.h>

using namespace std;

int main() {
 SetConsoleOutputCP(1251);

 int n,k1=0,k2=0;
 double eps; // точность
 double S = 0; // результат
 double x;
 cout << "Введите число x: " << endl;
 cin >> x;
 cout << "Введите число n: " << endl;
 cin >> n;
 cout << "Введите точность (e): " << endl;
 cin >> eps;
 if (x > 1 || x < 0) {
     cout << "x не входит в ОДЗ";
     return 0;
 }
 // первый способ
 double a = pow((2 * x), 4) * (5 + x) / 120;
 S = a;
 for (int k1 = 2; k1 < n; k1++) {
     a *= (4*k1+1+x)*pow(x,4)/2*(4*k1-3+x)*(4*k1+1);
     S += a;
 }
 cout.precision(20);
 cout << fixed;
 cout << "Результат (первый способ): " << S << endl;
 cout << "Количество повторов k1" << k1 << endl;

 // второй способ
k2 = 2;
 a = pow((2*x),4)*(5+x)/120;
 S = a;

 do {
     a *= (4 * k1 + 1 + x) * pow(x, 4) / 2 * (4 * k1 - 3 + x) * (4 * k1 + 1);
     S += a;
     k2++;
 } while (fabs(a) > eps);
 cout.precision(20);
 cout << fixed;

 cout << "/\Результат (второй способ): " << S << endl;
 cout << "Количество повторов k2" << k2 << endl;

 // контрольное выражение
 S = sin(x) - 2 * x - 2 + cos(x) + exp(x);
 cout.precision(20);
 cout << fixed;
 cout << "\Результат (контрольное выражние): " << S << endl;

 return 0;
}```

Ответы (0 шт):