#include <iostream> // ввод и вывод
#include <cmath> // степень pow
#include <clocale> // локализация
using namespace std; // пространство имен std
int main()
{
setlocale(LC_ALL, "Russian"); // русский язык
double x; // вещественное x
int n; // верхняя граница суммы
cout << "Введите значение x: ";
cin >> x;
cout << "Введите значение n (целое число от 1): ";
cin >> n;
if (x == 0.0) // проверка деления на ноль
{
cout << "Ошибка: x не может быть равен 0!" << endl;
system("pause");
return 0;
}
if (n < 1) // проверка границы
{
cout << "Ошибка: n должно быть >= 1!" << endl;
system("pause");
return 0;
}
double S = 0.0; // начальное значение суммы
for (int k = 1; k <= n; k++) // внешний цикл суммы по k
{
if (k == 2) // деление на ноль в знаменателе 2(k - 2)
{
cout << "Слагаемое при k = 2 пропущено (деление на ноль)" << endl;
continue; // пропускаем слагаемое
}
double numerator_k = pow(-3.0, 3 * k + 1); // числитель
double denominator_k = 2.0 * (k - 2) * pow(x, 3 * k + 1); // знаменатель
double a = numerator_k / denominator_k; // коэффициент слагаемого
double P = 1.0; // сброс произведения для текущего шага k
for (int m = 1; m <= k + 2; m++) // внутренний цикл произведения по m
{
if (m == 2) // числитель равен 0
{
cout << " -> сомножитель при m = 2 пропущен (равен нулю)" << endl;
continue; // пропускаем нулевой сомножитель
}
if (m == 4) // знаменатель равен 0
{
cout << " -> сомножитель при m = 4 пропущен (деление на ноль)" << endl;
continue; // пропускаем деление на ноль
}
double factor = (pow(m, 3) - 8.0) / (m - 4.0); // сомножитель
P *= factor; // накопление произведения
}
S += a * P; // прибавление слагаемого к общей сумме
}
cout << "\nИтоговое значение суммы S = " << S << endl; // вывод итоговой суммы
system("pause"); // пауза экрана
return 0; // завершение
}