#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;
}