0 / 0 / 0
Регистрация: 20.01.2010
Сообщений: 11
1

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

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

Помогите пожалуйста решить задачу!! Язык С++
Дано натуральное число n. Написать программу, которая вычисляет факториал неотрицательных целых чисел n (т.е. число целое и больше 0). Формула вычисления факториала приведена ниже. n! = 1*2*3*....*n, (формула вычисления факториала числа n)
0! = 1 (факториал 0 равен 1 (по определению факториала))
При этом необходимо использовать while
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.01.2010, 19:24
Ответы с готовыми решениями:

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

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

Вычисление факториала
Нужно заставить программу выводить результат, но почему то не получается #include <stdio.h>...

Вычисление факториала
Написать функцию, которая возвращает факториал числа. Значение 0! принять равным 1 (0!=1!=1). Не...

18
Быдлокодер
512 / 298 / 85
Регистрация: 22.11.2009
Сообщений: 892
20.01.2010, 19:30 2
Факториал больших чисел? Или это фигня по типу
C++
1
2
3
4
5
6
int i=1;
while (i!=n)
{
  pr*=i;
  i++;
}
1
0 / 0 / 0
Регистрация: 20.01.2010
Сообщений: 11
20.01.2010, 19:32  [ТС] 3
что то вроде этого. но только как этот код полностью выглядит???
0
135 / 69 / 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
0 / 0 / 0
Регистрация: 20.01.2010
Сообщений: 11
20.01.2010, 19:55  [ТС] 5
спасибки конечно!! Но, в том то и проблема что мне необходимо использовать C++
0
Эксперт JavaЭксперт С++
8376 / 3598 / 419
Регистрация: 03.07.2009
Сообщений: 10,708
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
1177 / 987 / 83
Регистрация: 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
424 / 228 / 87
Регистрация: 25.03.2009
Сообщений: 744
21.01.2010, 14:03 8
tanderstorm1, таких исходников в сети насчёт факториала море (и рекурсия и for и while) копипасть код
M128K145, и радуйся)
0
Maniac
Эксперт С++
1462 / 963 / 160
Регистрация: 02.01.2009
Сообщений: 2,817
Записей в блоге: 1
21.01.2010, 14:13 9
Цитата Сообщение от M128K145 Посмотреть сообщение
НИКОГДА не используй рекурсию для вычисления факториала.
Обоснуй.
0
Эксперт С++
7175 / 3234 / 80
Регистрация: 17.06.2009
Сообщений: 14,164
21.01.2010, 20:20 10
Обоснуй.
Использовать можно, но нет никакого смысла - просто считать будет медленнее и памяти жрать больше.
0
135 / 69 / 12
Регистрация: 10.10.2009
Сообщений: 187
21.01.2010, 20:27 11
надеюсь меня растреливать за ето не будут?
0
Эксперт С++
7175 / 3234 / 80
Регистрация: 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
135 / 69 / 12
Регистрация: 10.10.2009
Сообщений: 187
21.01.2010, 21:07 13
ну да .... там должно было быть

C
1
2
if(a==0)
return a;
0
Эксперт JavaЭксперт С++
8376 / 3598 / 419
Регистрация: 03.07.2009
Сообщений: 10,708
21.01.2010, 21:15 14
Radjuk, 0! = 1! = 1, поэтому
C
1
return 1;
0
135 / 69 / 12
Регистрация: 10.10.2009
Сообщений: 187
21.01.2010, 21:52 15
лажанулся по полной
0
4202 / 1794 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
22.01.2010, 06:52 16
Darky, там сказано вайлом, а ты что делаешь?
C++
1
2
3
4
5
6
7
8
9
int Factorial(int n)
{
 int Result=1;
 while (n>0)
 { 
  Result*=n;
 }
 return Result;
}
0
Эксперт JavaЭксперт С++
8376 / 3598 / 419
Регистрация: 03.07.2009
Сообщений: 10,708
22.01.2010, 09:31 17
taras atavin, а где ты n изменяешь? Ошибка в коде
0
4202 / 1794 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
22.01.2010, 09:33 18
Да, точно:
C++
1
2
3
4
5
6
7
8
9
10
int Factorial(int n)
{
 int Result=1;
 while (n>0)
 { 
  Result*=n;
  --n;
 }
 return Result;
}
0
0 / 0 / 0
Регистрация: 20.01.2010
Сообщений: 11
23.01.2010, 16:14  [ТС] 19
Всем огромное спасибо!!! Даже не думал что столько хороших людей на этом форуме!!!
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.01.2010, 16:14
Помогаю со студенческими работами здесь

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

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

Вычисление факториала
как реализовать вычисление факториала натурального числа с помощью рекурсивной функции?

Вычисление факториала
Здравствуйте Недавно начал изучать С++ Ну и столкнулся с проблемным заданием Составить программу...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru