Р. ЛАФОРЕ ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ В C++ (4-Е ИЗДАНИЕ) (часть13) онлайн
Прикладная программа

Рис. 13.3. Сложение чисел в формате verylong
Листинг 13.3. Программа VL_APP
// vl_app.cpp
// вычисляет факториалы больших чисел
#include "verylong.h" //заголовочный файл verylong
int main()
{
unsigned long numb, j;
verylong fact=1; //инициализировать verylong
cout << "\n\nВведите число: ";
cin >> numb; //ввод числа типа long int
for(j=numb; j>0; j--) //факториал — это numb *
fact = fact * j; // numb-1 * numb-2 *
cout << "Факториал= "; // numb-3 и т. д.
fact.putvl(); //вывести значение факториала
cout << endl;
return 0;
}
В этой программе fact — переменная класса veryiong. Другие переменные —
numb, j — не обязаны быть того же типа, они еще не доросли до таких размеров.
Например, для подсчета факториала числа 100 необходимо всего 3 разряда, тогда
как в fact для этого должно быть 158 разрядов.
Обратите внимание, как в выражении
fact = fact * j;
переменная j автоматически переводится в формат verylong. Это делается с помо-
щью конструктора с одним аргументом перед началом выполнения операции
умножения.
Вот какую прелесть вы увидите на экране при нахождении факториала
числа 100:
Введите число: 100
Факториал=
93326215443944152681699238856266700490715948264381621468592963895217599993229915608941463976
156518286253697920827223758251185210916864000000000000000000000000
А попробуйте-ка .вычислить такое, используя обычный тип Long! Удиви-
тельно, но программа работает довольно быстро. Приведенный выше пример
вычислялся какие-то доли секунды. Вы можете вычислять факториалы вплоть
до 400!, примерно после этого числа будет достигнут 1000-разрядный предел
формата1.
12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
Схожі підручники
- конспект з курсу Філософія
- Продажи и управление продажами Учеб. пособие для вузов (часть 4) (онлайн)
- РАБОТА С ВОЗРАЖЕНИЯМИ ПРАКТИЧЕСКИЕ ПРИМЕРЫ УБЕЖДЕНИЯ
- Методичні вказівки до виконання практичного заняття на тему «Штучний базис. М-базис.»
- Економіка підприємства. Методичка
- Курс Інвестування (стисло)
