#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h> // Подключение функций ввода-вывода (printf, scanf)
#include <stdlib.h> // Подключение системных функций (system)
#include <locale.h> // Подключение локализации русского языка
#include <math.h> // Подключение математических функций (pow)
int main()
{
setlocale(LC_ALL, "Russian"); // Установка русской локали в консоли
double x; // Переменная x, вводимая пользователем
int n; // Количество слагаемых n
double S = 0.0; // Накопитель итоговой суммы
printf("Введите значение x: "); // Приглашение ко вводу x
scanf("%lf", &x); // Считывание вещественного числа x
printf("Введите значение n: "); // Приглашение ко вводу n
scanf("%d", &n); // Считывание целого числа n
// Внешний цикл по параметру k от 1 до n
for (int k = 1; k <= n; k++)
{
// Проверка деления на ноль при k = 2
if (k == 2)
{
printf("Пропуск k = 2 (деление на ноль в знаменателе)\n"); // Сообщение об особой точке
continue; // Пропуск шага k = 2
}
double P = 1.0; // Инициализация накопителя произведения для текущего k
// Внутренний цикл по параметру m от 1 до k + 2
for (int m = 1; m <= k + 2; m++)
{
// Проверка деления на ноль при m = 4
if (m == 4)
{
printf("Прерывание произведения при m = 4 (деление на ноль)\n"); // Сообщение об особой точке
P = 0.0; // Обнуление произведения
break; // Выход из внутреннего цикла
}
double term = (pow((double)m, 3) - 8.0) / (m - 4.0); // Вычисление очередного сомножителя
P *= term; // Накопление произведения
}
int pwr = 3 * k + 1; // Показатель степени (целое число)
double sign = (pwr % 2 == 0) ? 1.0 : -1.0; // Определение знака (-1)^(3k+1)
double num = sign * pow(3.0, (double)pwr); // Числитель дроби: (-3)^(3k+1) без Domain Error
double den = 2.0 * (k - 2.0) * pow(x, (double)pwr); // Знаменатель дроби
double coeff = num / den; // Вычисление коэффициента перед произведением
S += coeff * P; // Добавление вычисленного слагаемого к общей сумме
}
printf("\nИтоговая сумма S = %.4lf\n", S); // Вывод результата вычисления суммы
system("pause"); // Остановка консоли перед закрытием программы
return 0; // Завершение работы программы
}