#include <iostream>
#include <cmath> // Для библиотеки exp()
#include <iomanip> // Для форматирования вывода
using namespace std;
double calculateExponentialSum(double x, int i, double eps) {
double sum = 1.0; // Начинаем с 1, так как первый член ряда всегда 1
double term = 1.0; // Текущее слагаемое (первый член)
int n = 1; // Счётчик для факториала и степеней
// Пока очередное слагаемое больше заданной точности, продолжаем вычисление
while (fabs(term) > eps) {
term *= (x / (n * i)); // Рекуррентное вычисление следующего члена ряда
sum += term; // Добавляем к общей сумме
n++; // Увеличиваем счётчик
}
return sum;
}
int main() {
double x; // Аргумент x
int i; // Параметр i
double eps; // Точность Eps
// Ввод данных
cout << "Введите значение x: ";
cin >> x;
cout << "Введите значение i: ";
cin >> i;
cout << "Введите точность Eps: ";
cin >> eps;
// Вычисление суммы ряда
double result = calculateExponentialSum(x, i, eps);
// Сравнение с библиотечной функцией exp
double expected = exp(x / i);
// Вывод результатов
cout << fixed << setprecision(10);
cout << "Вычисленная сумма ряда: " << result << endl;
cout << "Значение exp(x / i): " << expected << endl;
cout << "Погрешность: " << fabs(result - expected) << endl;
return 0;
}