C++ Вычислить с точностью до заданного 0<ε<1:
очень нужна помощь
Задание такое: Вычислить с точностью до заданного 0<e<1:

Значение 0<x<2 задать с клавиатуры. Считать, что нужная точность достигнута, если очередное слагаемое по модулю меньше e.
Следующий код получился по данной задачи
int main()
{
setlocale(LC_ALL, "Russian");
double x = 0, eps = 0;
const double x1 = 0, x2 = 2, eps1 = 0, eps2 = 1;
double new_x1 = (x2 - x1) / 2, new_x2 = (x2 + x1) / 2,
new_eps1 = (eps2 - eps1) / 2, new_eps2 = (eps2 + eps1) / 2;
if (fabs(x - new_x2) >= new_x1 || fabs(eps - new_eps2) >= new_eps1)
return 0;
double sum = 0, memb = x, n = 1;
while (fabs(memb) >= eps)
{
sum += memb;
n += 2;
memb *= -x * x / n / (n - 1);
}
cout << sum;
return 0;
}
Ответы (1 шт):
Автор решения: Mikhailo
→ Ссылка
Странно что Harry не ответил на любимую тему. Исправим этот недочет. Вот решение поставленной задачи.
#include <iostream>
int main() {
double e, x;
std::cin >> x >> e;
double a = x, sin = x;
for (int n = 2; abs(a) >= e; n += 2) {
a *= -x * x / n / (n + 1);
sin += a;
}
std::cout << sin << "\n";
}