Для решения задачи нам нужно завести переменную, которая будет изменять свое значение с шагом 2 вне зависимости от того, четное или нечетное число x. Однако начальное значение у этой переменной будет зависеть от четности или нечетности x. Если введенное число четное, то значение этой переменной будет равно 0, в противном случае начальное значение будет равно 1.
Далее в теле цикла будем увеличивать значение этой переменной на 2 и находить требуемое произведение. Приведем текст программы:
#include<iostream.h> main () { int x,y,n=1; cout << "Введите натуральное число x: "; cin >> x; if (x%2==0) y = 0; else y = 1; while (y<x) { n *= y += 2; } cout << "x!! = " << n; }
Обратите внимание на конструкцию: n *= y += 2;. Она вычисляется справа налево. Сначала значение переменной y увеличивается на 2, а затем вычисленное значение y участвует в присваивании: n = n * y.