Форум программистов, компьютерный форум CyberForum.ru

Вычислить факториал натурального числа n из отрезка [1;20] - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Создать программу, которая будет сообщать на экран, сколько корней имеет квадратное уравнение ax²+bx+c=0. http://www.cyberforum.ru/cpp-beginners/thread614689.html
Создать программу, которая будет сообщать на экран, сколько корней имеет квадратное уравнение ax²+bx+c=0. Коэффициенты a, b и c пользователь вводит с клавиатуры. Пример оформления программы: Введите коэффициент a при квадрате x: 2 Введите коэффициент b при x: 3 Введите свободный член c: 1 Ваше уравнение имеет два различных корня Следующая тема с названием не по правилам форума будет...
C++ Округление и вывод вещественное число Создать программу, округляющую и выводящую на экран вещественное число, введенное пользователем с клавиатуры, в виде целого числа. Например, если пользователь ввёл число -3.2, то на экран выводится -3; если пользователь ввёл -1.95, то на экран выводится -2; если пользователь ввёл 17.5, то на экран выводится 18. http://www.cyberforum.ru/cpp-beginners/thread614686.html
C++ Eсть хоть какие-то идеи?
Построить чертеж: «В прямоугольном параллелепипеде провести перерез, который проходит через сторону нижней основы и противоположную сторону верхней основы.
C++ Ввести символ и вывести сообщение
Ввести символ и вывести сообщение: -«красный», если введена либо большая, либо маленькая русская буква «к»; -«синий», если введена либо большая, либо маленькая русская буква «с»; -«зеленый», если введена либо большая, либо маленькая русская буква «з»; и «символ не распознается» при вводе любого другого символа.
C++ Найти и вывести на экран наибольший нетривиальный делитель числа http://www.cyberforum.ru/cpp-beginners/thread614640.html
Пользователь вводит с клавиатуры натуральное число, найти и вывести на экран наибольший нетривиальный (т.е. не равный введённому числу или единице) делитель числа, либо сообщить, что число простое. Например, если пользователь ввёл 17, то на экран выводится сообщение «число простое»; если пользователь ввёл 24, то на экран выводится сообщение «наибольший нетривиальный делитель: 12».
C++ Как правильно закрыть процесс Я пишу программу мониторинга Для этого использую драйвер и в драйвере подменяю CreateSection Как правильно закрыть процесс _asm{ //save execution contect and calls check() -the rest depends upon the value check() returns // if it is 1, proceed to the actual callee. Otherwise,return STATUS_ACCESS_DENIED pushfd pushad подробнее

Показать сообщение отдельно
-=ЮрА=-
Заблокирован
Автор FAQ
27.06.2012, 14:27     Вычислить факториал натурального числа n из отрезка [1;20]
g-h,

Цитата Сообщение от g-h Посмотреть сообщение
Напиши отдельную функцию, которая считает факториал какого-то числа.
А потом уже в цикле проходи все числа от 1 до 20, используя эту функцию
- во первых нерационально в плане прокрут в цикле + факториал для каждого числа отдельно, вот вторых а то я никогда не считал факториал, суть в том что при 15! и 16! наступает непонятная мне ситуация которая приводит к некорректному расчёту.
Вот рекурсивный способ расчёта факториала
C++
1
2
3
4
5
6
7
unsigned long fact(unsigned long n)
{
    unsigned long ret = ((n == 0) ? (n = 1) : n);
    if(1 < (n = n - 1))
        ret = ret*fact(n);
    return ret;
}
но данное задание скорее всего расчитано на начинающих да и диапазон 1-20 дан не спроста, по идеи UNSIGNED LONG должно было хватать.

Добавлено через 4 минуты
Цитата Сообщение от g-h Посмотреть сообщение
Все равно лучше отдельную подпрограмму написть для поиска факториала. Чем это все в цикле рассчитывать
- кто тебе это сказал??? Допустим тебе надо посчитать факторил наших 20-ти + вывести результаты промежуточных вычислений, положим используешь указанную вверху рекурсивную функцию расчёта. Как думаешь что быстрее 20 раз вызвать функцию, которая сама по сути является циклом от 1-го до конкретного числового значения. Либо же за один проход получить все значения обходясь без вызовов и прочего.
Дословно вот схема с вызовом функции расчёта
C++
1
2
3
for(i = 1; i <= val; i++)
for(j = 1; j <= i;    j++)
{}
 
Текущее время: 12:39. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru