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


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

using namespace std;

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

    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; // сюда будем перемножать числа (начинаем с единицы)

    // крутим цикл по m от 1 до k + 2 включительно
    for (int m = 1; m <= k + 2; m++)
    {
        // если m = 2, числитель (m^3 - 8) станет 0, все произведение обнулится — пропускаем
        if (m == 2)
        {
            cout << "Точка m = 2 пропущена (сомножитель равен нулю)" << endl;
            continue; // перескакиваем к следующему шагу цикла
        }

        // если m = 4, в знаменателе (m - 4) будет ноль, а на ноль делить нельзя — пропускаем
        if (m == 4)
        {
            cout << "Точка m = 4 пропущена (деление на ноль)" << endl;
            continue; // тоже сразу идем дальше
        }

        // если всё нормально, считаем нашу дробь
        double factor = (pow(m, 3) - 8.0) / (m - 4.0);
        P *= factor; // домножаем результат в общий накопитель
    }

    // выводим готовый ответ
    cout << "\nИтоговое значение произведения P = " << P << endl;

    system("pause"); // задержка экрана
    return 0;        // конец программы
}