#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; // конец программы
}