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


#include <iostream>     // ввод и вывод
#include <cmath>        // для степени pow
#include <clocale>      // русский язык

using namespace std;

int main()
{
    // Предусловие: вводим целое число k >= 1
    // Постусловие: считаем произведение P, пропуская бесконечность и ноль

    setlocale(LC_ALL, "Russian");

    int k;
    cout << "Введите k (от 1): ";
    cin >> k;

    if (k < 1)
    {
        cout << "Ошибка: k должно быть >= 1!" << endl;
        system("pause");
        return 0;
    }

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

    for (int m = 1; m <= k + 2; m++)
    {
        // 1. Пропуск деления на ноль (множитель уходит в бесконечность)
        if (m - 4 == 0)
        {
            cout << "Сомножитель равен бесконечности (деление на ноль), шаг m = " << m << " пропущен" << endl;
            continue;
        }

        // считаем сам сомножитель
        double factor = (pow(m, 3) - 8.0) / (m - 4.0);

        // 2. ВОТ ЗДЕСЬ: если сомножитель равен нулю — пропускаем, чтобы не занулить P!
        if (factor == 0.0)
        {
            cout << "Сомножитель равен нулю, шаг m = " << m << " пропущен (не умножаем на 0)" << endl;
            continue; // перескакиваем, P не зануляется
        }

        // если множитель нормальный — умножаем
        P *= factor;
    }

    cout << "\nИтоговое произведение P = " << P << endl;

    system("pause");
    return 0;
}