Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 38, средняя оценка - 4.66
tanderstorm1
0 / 0 / 0
Регистрация: 20.01.2010
Сообщений: 11
#1

Вычисление факториала. - C++

20.01.2010, 19:24. Просмотров 4969. Ответов 18
Метки нет (Все метки)

Помогите пожалуйста решить задачу!! Язык С++
Дано натуральное число n. Написать программу, которая вычисляет факториал неотрицательных целых чисел n (т.е. число целое и больше 0). Формула вычисления факториала приведена ниже. n! = 1*2*3*....*n, (формула вычисления факториала числа n)
0! = 1 (факториал 0 равен 1 (по определению факториала))
При этом необходимо использовать while
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.01.2010, 19:24
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Вычисление факториала. (C++):

Вычисление факториала - C++
Написать программу, чтобы она циклически запрашивала ввод пользователем числа и считала его факториал до тех пор, пока пользователь не...

Вычисление факториала - C++
Нужно заставить программу выводить результат, но почему то не получается #include <stdio.h> #include <conio.h> int f(int); ...

Вычисление факториала - C++
Помогите пожалуйста вычислить факториал:

Вычисление факториала - C++
ребята помогите решить. составьте пожалуйста код!) а) (m+1)!

Вычисление факториала - C++
В одном задании я столкнулся с факториал b(итое)=i/(i!) восклицательный знак это факториал я понял а вот как его обьявить в языке c++...

Вычисление двойного факториала - C++
Помогите пожалуйста не как не пойму, само задание: Вычисление двойного факториала числа n!!=n*(n-2)*(n-4)*(n-6) и тд... Число n вводится с...

18
Darky
Быдлокодер
507 / 294 / 45
Регистрация: 22.11.2009
Сообщений: 892
Завершенные тесты: 1
20.01.2010, 19:30 #2
Факториал больших чисел? Или это фигня по типу
C++
1
2
3
4
5
6
int i=1;
while (i!=n)
{
  pr*=i;
  i++;
}
1
tanderstorm1
0 / 0 / 0
Регистрация: 20.01.2010
Сообщений: 11
20.01.2010, 19:32  [ТС] #3
что то вроде этого. но только как этот код полностью выглядит???
0
Radjuk
134 / 68 / 12
Регистрация: 10.10.2009
Сообщений: 187
20.01.2010, 19:52 #4
вот в виде функции:

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
int Fact(int a);
 
void main()
{
clrscr();int a;
cin>>a;
cout<<Fact(a);
getch();
}
 
int Fact(int a)
{
if(a == 1)
return a;
else return Fact(a-1)*a;
}
1
tanderstorm1
0 / 0 / 0
Регистрация: 20.01.2010
Сообщений: 11
20.01.2010, 19:55  [ТС] #5
спасибки конечно!! Но, в том то и проблема что мне необходимо использовать C++
0
M128K145
Эксперт С++
8300 / 3520 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
21.01.2010, 10:46 #6
Radjuk, НИКОГДА не используй рекурсию для вычисления факториала.

tanderstorm1, вот код
C++
1
2
3
4
5
6
7
int fact(int n)
{
    int f(1);
    while(n > 1)
        f *= n--;
    return f;
}
1
Day
1159 / 964 / 57
Регистрация: 29.10.2009
Сообщений: 1,385
21.01.2010, 13:48 #7
C является подмножеством C++
Т.е. формально задача решена.
В том смысле, что если исходнику дать расширение cpp, то все будет ОК
Но как для такой ерунды использовать специальные средства C++ - ума не приложу
Может быть так
Код
  f = 1;
  for(int i=2; i<=n; i++)  // Вот это в чистом С не допустимо
     f *= i;
0
Андрейка
420 / 224 / 27
Регистрация: 25.03.2009
Сообщений: 744
21.01.2010, 14:03 #8
tanderstorm1, таких исходников в сети насчёт факториала море (и рекурсия и for и while) копипасть код
M128K145, и радуйся)
0
ISergey
Maniac
Эксперт С++
1395 / 906 / 56
Регистрация: 02.01.2009
Сообщений: 2,706
Записей в блоге: 1
21.01.2010, 14:13 #9
Цитата Сообщение от M128K145 Посмотреть сообщение
НИКОГДА не используй рекурсию для вычисления факториала.
Обоснуй.
0
odip
Эксперт С++
7159 / 3221 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
21.01.2010, 20:20 #10
Обоснуй.
Использовать можно, но нет никакого смысла - просто считать будет медленнее и памяти жрать больше.
0
Radjuk
134 / 68 / 12
Регистрация: 10.10.2009
Сообщений: 187
21.01.2010, 20:27 #11
надеюсь меня растреливать за ето не будут?
0
odip
Эксперт С++
7159 / 3221 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
21.01.2010, 20:46 #12
надеюсь меня растреливать за ето не будут?
C
1
2
3
4
5
6
int Fact(int a)
{
if(a == 1)
return a;
else return Fact(a-1)*a;
}
Расстреливать будем - твой код неправильно считает !
А именно - значение Fact(0).
0
Radjuk
134 / 68 / 12
Регистрация: 10.10.2009
Сообщений: 187
21.01.2010, 21:07 #13
ну да .... там должно было быть

C
1
2
if(a==0)
return a;
0
M128K145
Эксперт С++
8300 / 3520 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
21.01.2010, 21:15 #14
Radjuk, 0! = 1! = 1, поэтому
C
1
return 1;
0
Radjuk
134 / 68 / 12
Регистрация: 10.10.2009
Сообщений: 187
21.01.2010, 21:52 #15
лажанулся по полной
0
21.01.2010, 21:52
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.01.2010, 21:52
Привет! Вот еще темы с ответами:

Вычисление факториала через for - C++
Помогите что-то не могу правильно написать код, кто может подсказать через цикл for , что-то похоже на этот код #include &lt;iostream&gt; ...

Вычисление факториала числа N - C++
Что надо написать в пропущенной строке? setlocale(LC_ALL, &quot;Russian&quot;); int N; int P=1; cout&lt;&lt;&quot;Input N: &quot;; cin&gt;&gt;N; ...

Вычисление факториала числа - C++
Написать программу, которая вычисляет факториал введенного с клавиатуры числа. (Факториалом числа n называется произведение целых чисел от...

Вычисление факториала числа - C++
Маленькая программа вычисляет факториал числа, введенного пользователем, по формуле N! = N * (N – 1)!, где 0 != 1, и выводит его на экран. ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.