Циклические алгоритмы. «Разложение функций»
В следующем задании необходимо численно убедиться в
справедливости равенства, то есть необходимо сравнить результаты
вычисления значения функции для заданного значения аргумента,
полученные двумя способами: вычислением с использованием
стандартных математических функций (левая часть равенства) и путем
разложения функции с заданной точностью Е (правая часть равенства).
При вычислении разложения необходимо также выяснить количество
шагов разложения, потребовавшееся для достижения точности Е.
Язык программирования - С

Тут надо ограничиться диапазоном для х и минимальной величиной ошибки (относительной, естественно, а не абсолютной !), иначе ничего нельзя гарантировать! Код внизу при х є [-15; 15] и eps не меньше 1е-7 хорошо работает:
#include <iostream>
#include <iomanip>
#include <cmath>
using namespace std;
int main()
{
const double e = 1.0;
double ch, eps, n, p, x, y, z;
while (true)
{
p = 1.0;
cout << "x eps » ";
cin >> x >> eps;
ch = cosh(x);
y = x / M_PI;
y *= y;
for (n = 1; n <= 2000000000; n++)
{
z = e / (n - 0.5);
p *= e + y * z * z;
if (fabs(p / ch - 1) < eps) break;
}
cout << "quantity of factors " << (int) n <<
'\n' << setprecision(16) << p << '\n' <<
ch << setprecision(4) << endl;
}
}
