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


#include <iostream>     // потоковый ввод-вывод
#include <cmath>        // математические функции (pow)
#include <clocale>      // поддержка русского языка

using namespace std;

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

    setlocale(LC_ALL, "Russian");

    double x; // входная вещественная переменная
    int n;    // верхняя граница внешней суммы

    cout << "Введите значение x: ";
    cin >> x;

    cout << "Введите значение n (целое положительное число): ";
    cin >> n;

    if (x == 0.0)
    {
        cout << "Ошибка: переменная x не может быть равна нулю (деление на ноль)!" << endl;
        system("pause");
        return 0;
    }

    double S = 0.0; // накопитель для общей суммы

    // Внешний цикл суммы по k от 1 до n
    for (int k = 1; k <= n; k++)
    {
        // Проверка деления на ноль во внешнем слагаемом при k = 2
        if (k == 2)
        {
            cout << "Предупреждение: слагаемое при k = 2 пропущено (деление на ноль в знаменателе суммы)\n";
            continue; // переходим к следующему значению k
        }

        // Вычисление дроби внешнего слагаемого: (-3)^(3k+1) / (2*(k-2) * x^(3k+1))
        double numerator_k = pow(-3.0, 3 * k + 1);
        double denominator_k = 2.0 * (k - 2) * pow(x, 3 * k + 1);
        double term_k = numerator_k / denominator_k;

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

        // Внутренний цикл произведения по m от 1 до k + 2
        for (int m = 1; m <= k + 2; m++)
        {
            // Проверка деления на ноль во внутреннем сомножителе при m = 4
            if (m == 4)
            {
                cout << "Предупреждение: множитель при m = 4 пропущен (деление на ноль в знаменателе произведения)\n";
                continue; // пропускаем множитель m = 4, произведение домножается дальше
            }

            // Вычисление сомножителя: (m^3 - 8) / (m - 4)
            double factor = (pow(m, 3) - 8.0) / (m - 4.0);
            P *= factor;
        }

        // Прибавление полного слагаемого к общей сумме
        S += term_k * P;
    }

    cout << "\nИтоговое значение суммы S = " << S << endl;

    system("pause");
    return 0;
}