Для решения задачи нам нужно завести переменную, которая будет изменять свое значение с шагом 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.