Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/12: Рейтинг темы: голосов - 12, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 03.04.2010
Сообщений: 3
1

факториал числа. я начинающий

11.04.2010, 15:26. Просмотров 2226. Ответов 14
Метки нет (Все метки)

Нужно создать функцию для вычисления факториала числа. Чтобы числа вводить с клавиатуры и предусмотреть возможность многократных расчетов с различными данными в С++ помогите плиз
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.04.2010, 15:26
Ответы с готовыми решениями:

Описать рекурсивные функции вещественного типа, вычисляющие факториал и двойной факториал заданного числа
Описать рекурсивные функции Fact(N) и Fact2(N) вещественного типа, вычисляющие значения факториала...

Как сравнить числа.(начинающий)
Как сравнить числа например: если введённое число больше 40 cout <<"неправильный ввод"<<endl; а...

Факториал некторого числа записан в eax, а нужно вывести этот факториал в ebx
Хочу сделать код факториал некторого числа записан в eax, а нужно вывести этот факториал в ebx и...

Определить во сколько раз факториал числа n! больше факториала числа m!
Определить во сколько раз факториал числа n! больше факториала числа m!

14
60 / 22 / 2
Регистрация: 13.03.2010
Сообщений: 65
11.04.2010, 15:37 2
C
1
2
3
4
int f(int x)
{
    return x?x*f(x-1):1;
}
1
7 / 7 / 3
Регистрация: 11.04.2010
Сообщений: 25
11.04.2010, 15:43 3
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include<iostream.h>
int f(int n)
{if (n==0) return 0;
else if (n==1) return 1;
else
return n?n*f(n-1):1;}
void main()
{int n;
cout<<"Please, enter n: ";
cin>>n;
cout<<"The result is ";
cout<< f(n);}
1
Эксперт JavaЭксперт С++
8362 / 3583 / 419
Регистрация: 03.07.2009
Сообщений: 10,708
11.04.2010, 19:27 4
Киря1, рекурсия - худший способ, поэтому так
C++
1
2
3
4
5
6
7
int Factorial(int fact)
{
    int f = 1, i = 2;
    while(i <= fact)
        f *= i++;
    return f;
}
2
4196 / 1789 / 211
Регистрация: 24.11.2009
Сообщений: 27,563
12.04.2010, 06:29 5
Вайл тоже не лучший.
C++
1
2
3
4
5
6
7
8
9
int Factorial(int fact)
{
 int f, i;
 for (f=1, i=fact; i>0; --i)
 {
  f*=i;
 }
 return f;
}
.
1
Эксперт JavaЭксперт С++
8362 / 3583 / 419
Регистрация: 03.07.2009
Сообщений: 10,708
12.04.2010, 10:02 6
taras atavin, а чем while так плох? Собственно вы допустили небольшую ошибку в форе
C++
1
for (f=1, i=fact; i>1; --i)
Смысла на 1 умножать нету
1
0 / 0 / 0
Регистрация: 03.04.2010
Сообщений: 3
13.04.2010, 16:23  [ТС] 7
всем спасибо!)
работает нормально, тока почему-то числа после 23 рассчитывает в минус и после 34 ответ 0 пишет, я на это забил (ограничение поставил)
0
45 / 45 / 9
Регистрация: 11.04.2010
Сообщений: 223
13.04.2010, 16:40 8
Цитата Сообщение от Киря1 Посмотреть сообщение
всем спасибо!)
работает нормально, тока почему-то числа после 23 рассчитывает в минус и после 34 ответ 0 пишет, я на это забил (ограничение поставил)
Происходит переполнение. 40! ни одна машина в мире не посчитает... Минус потому что в старший бит (отвечающий за знак) встает единица. Удивительно, что у вас не произошла ошибка...
0
Модератор
Автор FAQ
3682 / 959 / 114
Регистрация: 10.01.2010
Сообщений: 2,550
13.04.2010, 17:15 9
Цитата Сообщение от romex Посмотреть сообщение
Происходит переполнение. 40! ни одна машина в мире не посчитает...
Мне показалось что это работает верно
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
 
double fact(int number){
    double result = number;
    while (--number > 1)
    {
        result *= number;
        // Просто отображает ход расчета
        std::cout << "[" << number << "] " << result << std::endl;
    }
return result;
}
 
int main()
{ 
    double f40 = fact(40);
return 0;           
}
PS. После 170! сдулся
0
45 / 45 / 9
Регистрация: 11.04.2010
Сообщений: 223
13.04.2010, 18:42 10
Хмм, виноват...
Поправлюсь:40! Ни один карманный микрокалькулятор не посчитает.
0
Эксперт JavaЭксперт С++
8362 / 3583 / 419
Регистрация: 03.07.2009
Сообщений: 10,708
13.04.2010, 18:54 11
insideone, с точностью до 1 для типа int - 13! дальше идет переполнение

А 170! для double - там идет большая потеря и все время округления, поэтому я не могу сказать что это посчитанный факториал
0
insideone
13.04.2010, 19:08
  #12

Не по теме:

M128K145, хм, действительно... впрочем для неточных расчетов все же можно думаю и так
Кстати забавно, но Гугл считает именно до 170! =

0
45 / 45 / 9
Регистрация: 11.04.2010
Сообщений: 223
13.04.2010, 19:59 13
Цитата Сообщение от M128K145 Посмотреть сообщение
insideone, с точностью до 1 для типа int - 13! дальше идет переполнение

А 170! для double - там идет большая потеря и все время округления, поэтому я не могу сказать что это посчитанный факториал
Извините, о каких округлениях идет речь?

Добавлено через 2 минуты
Хотя нет, осознал...
0
4196 / 1789 / 211
Регистрация: 24.11.2009
Сообщений: 27,563
14.04.2010, 05:16 14
Цитата Сообщение от romex Посмотреть сообщение
40!
Моя считает 170!

Добавлено через 2 минуты
Кстати, можно сделать арифметику 1024 бит на число и считать 170! с точностью до 1.
0
Эксперт JavaЭксперт С++
8362 / 3583 / 419
Регистрация: 03.07.2009
Сообщений: 10,708
14.04.2010, 10:45 15
Цитата Сообщение от taras atavin Посмотреть сообщение
Моя считает 170!
Это в смысле вот это?
Цитата Сообщение от taras atavin Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
int Factorial(int fact)
{
 int f, i;
 for (f=1, i=fact; i>0; --i)
 {
  f*=i;
 }
 return f;
}
Если да - то максимум 13. А вообще речь идет о стандартный типах, потому как со своим типом я могу с точностью до единицы посчитать 100000! и это не предел
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.04.2010, 10:45

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Определить во сколько раз факториал числа n больше числа m
Определить во сколько раз факториал числа n больше числа m

Найти все такие N(N<100),что у числа N!(факториал) сумма цифр-квадрат целого числа
Без этой задачи мне не ставят зачет и я не могу выйти на сэссию=( &quot;&quot;Найти все такие N(N&lt;100),что...

Факториал числа
Ребята, SOS!!! объявить статический метод , который получает неотрицательное целое число и...

Факториал числа
Написал программу, которая считает факториал числа. Но считает она до максимального значения типа...

факториал числа
Препод дал задание на джава, Найти факториал числа N. Не могу ничего понятного найти, так как джава...

факториал числа n
Как сделать в данной программе так, что бы она высчитывала факториал лишь в диапазоне от 1 до 12....


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

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

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