ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ В C++ (4-Е ИЗДАНИЕ) (часть 3) онлайн

Варианты цикла for

Инкрементирующий оператор не обязательно должен производить операцию инкрементирования счетчика цикла; вместо инкрементирования может исполь- зоваться любая другая операция. В следующем примере под названием FACTOR в операторе цикла используется декрементирование счетчика цикла. Программа запрашивает значение у пользователя, а затем подсчитывает факториал этого числа (факториал числа представляет из себя произведение всех целых положи- тельных чисел, не превышающих данное число. Например, факториал числа 5 равен 1*2*3*4*5=120).

// factor.cpp

// подсчет факториала числа с помощью цикла for #include <iostream> using namespace std; int main()

{

  unsigned int numb;

  unsigned long fact = 1;       // тип long для результата

  cout << "Введите целое число: ";

  cin >> numb;                  // ввод числа

  for(int j=numb; j>0; j--)     // умножение 1 на

                fact *= j;                    // numb, numb-1, ..., 2, 1

                cout << "Факториал числа равен " << fact << endl; return 0;

}

В этом примере инициализирующий оператор присваивает переменной j зна- чение, вводимое пользователем. Условием продолжения цикла является поло- жительность значения j. Инкрементирующее выражение после каждой итера- ции уменьшает значение j на единицу.

Мы использовали тип unsigned long для переменной, хранящей значение фак- ториала, потому, что даже для небольших чисел значения их факториалов очень велико. В 32-битных системах размеры типов int и long совпадают, но в 16-бит- ных системах размер типа long больше. Следующий результат работы програм- мы показывает, насколько велико может быть значение факториала даже для не- большого числа:

Введите целое число: 10 Факториал числа равен 3628800

Самое большое число, которое можно использовать для ввода в этой про- грамме, равно 12. Для чисел больше 12 результат работы программы будет неве- рен, поскольку произойдет переполнение.

 

14