Загрузка данных



#include <stdio.h>   // Функции ввода-вывода (printf, scanf)
#include <stdlib.h>  // Системные функции (system)
#include <locale.h>  // Русская локализация
#include <math.h>    // Функция степени pow

int main()
{
    // Предусловие: ввод x != 0, n >= 1 (точки деления на 0: k = 2 и m = 4 пропускаются)
    // Постусловие: расчет и вывод итоговой суммы S

    setlocale(LC_ALL, "Russian"); // Включение русского языка в консоли

    double x;        // Вводимый аргумент x
    int n;           // Количество слагаемых n
    double S = 0.0;  // Накопитель суммы S

    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 (знаменатель 2*(k - 2) обращается в ноль)
        if (k == 2)
        {
            printf("Шаг k = 2 пропущен (деление на ноль)\n");
            continue; // Переход к следующему шагу k без прерывания программы
        }

        double P = 1.0; // Инициализация накопителя произведения для текущего k

        // Внутренний цикл произведения по m от 1 до k + 2
        for (int m = 1; m <= k + 2; m++)
        {
            // Пропускаем сомножитель при m = 4 (знаменатель m - 4 обращается в ноль)
            if (m != 4)
            {
                double term = (double)(m * m * m - 8) / (double)(m - 4); // Вычисление сомножителя
                P *= term;                                              // Накопление произведения
            }
            else
            {
                printf("  Сомножитель m = 4 пропущен (деление на ноль)\n");
            }
        }

        // Вычисление внешнего множителя при текущем k
        int pwr = 3 * k + 1;                                // Показатель степени (3k + 1)
        double sign = (pwr % 2 == 0) ? 1.0 : -1.0;          // Знак числителя (-1)^(3k+1)
        double num = sign * pow(3.0, (double)pwr);          // Числитель (-3)^(3k+1)
        double den = 2.0 * (k - 2.0) * pow(x, (double)pwr); // Знаменатель 2*(k-2)*x^(3k+1)
        double coeff = num / den;                           // Итоговый дробный коэффициент

        S += coeff * P; // Добавление вычисленного слагаемого к общей сумме
    }

    printf("\nвыв. S = %.4lf\n", S); // Вывод итоговой суммы

    system("pause"); // Задержка окна консоли
    
}