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

Циклы: вычислить факториал числа - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 86, средняя оценка - 4.85
HaosBee
0 / 0 / 0
Регистрация: 19.06.2011
Сообщений: 6
19.06.2011, 19:58     Циклы: вычислить факториал числа #1
1.Надо написать программу которая будет вычислять факториал числа.я вот пробовал чёт не получается:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include "stdafx.h"
#include <stdio.h>
#include "conio.h"
#include <iostream>
 
int _tmain(int argc, _TCHAR* argv[])
{{
    int factor,digit,count;
    printf("Vvedite celoe cheslo");
    scanf("%d",&digit);
    factor=1;
    for(count=1;count<factor;count++)
    {
     factor*=count;
 
    }
    printf("Faktorial chisla %d raven %d",digit,factor);
}
Пришлите плиз код полностью.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
OstapBender
 Аватар для OstapBender
581 / 519 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
19.06.2011, 20:03     Циклы: вычислить факториал числа #2
C
1
2
3
4
5
6
7
8
9
10
11
12
13
int _tmain(int argc, _TCHAR* argv[])
{
    int factor,digit,count;
    printf("Vvedite celoe cheslo");
    scanf("%d",&digit);
    factor=1;
    for(count=1;count<=digit;count++)
    {
        factor*=count;
    }
    
    printf("Faktorial chisla %d raven %d",digit,factor);
}
Mиxaил
 Аватар для Mиxaил
530 / 435 / 37
Регистрация: 10.12.2009
Сообщений: 1,857
19.06.2011, 20:05     Циклы: вычислить факториал числа #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
 
long long Factor ( int n )
{
    if ( ( n == 1 ) || ( n == 0 ) )
        return 1;
    else
        return ( n * Factor ( n - 1 ) );
}
 
int main( int argc, char * argv[] )
{
    std::cout << Factor ( 4 ) << std::endl;
    std::cin.get();
    return 0;
}
lamed
297 / 297 / 71
Регистрация: 07.05.2011
Сообщений: 592
19.06.2011, 20:05     Циклы: вычислить факториал числа #4
VC не установлен, есть G++/Code::Blocks
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <stdio.h>
// Проверено G++/Code::Blocks
 
int main()
{
    int digit,count;
    long factor;
 
    printf("Vvedite celoe cheslo");
    scanf("%d",&digit);
    factor=1;
    for(count=1;count<=digit;count++)
        factor*=count;
    printf("Faktorial chisla %d raven %d",digit,factor);
    return 0;
}
HaosBee
0 / 0 / 0
Регистрация: 19.06.2011
Сообщений: 6
19.06.2011, 20:06  [ТС]     Циклы: вычислить факториал числа #5
Спасибо Большое ))
mpg756
0 / 0 / 0
Регистрация: 19.06.2011
Сообщений: 8
19.06.2011, 20:10     Циклы: вычислить факториал числа #6
Mиxaил,
Цитата Сообщение от Mиxaил Посмотреть сообщение
long long Factor ( int n )
а зачем здесь 2 раза long?
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
19.06.2011, 20:13     Циклы: вычислить факториал числа #7
Цитата Сообщение от mpg756 Посмотреть сообщение
Mиxaил, а зачем здесь 2 раза long?
Чтобы большее число влезло.
Очевидно же.
grizlik78
Эксперт C++
 Аватар для grizlik78
1882 / 1414 / 101
Регистрация: 29.05.2011
Сообщений: 2,958
19.06.2011, 20:14     Циклы: вычислить факториал числа #8
mpg756, это от жадности
long long - это нестандартный тип, размер которого обычно 64 бита. Стандартный тип int64_t, к сожалению, поддерживается тоже далеко не всеми компиляторами. Есть ещё и другие расширения, например __int64
_Faradey
0 / 0 / 0
Регистрация: 13.10.2015
Сообщений: 284
22.03.2016, 09:01     Циклы: вычислить факториал числа #9
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
 
long long Factor ( int n )
{
    if ( ( n == 1 ) || ( n == 0 ) )
        return 1;
    else
        return ( n * Factor ( n - 1 ) );
}
 
int main( int argc, char * argv[] )
{
    std::cout << Factor ( 4 ) << std::endl;
    std::cin.get();
    return 0;
}
а теперь попробуйте вычислить 1000!
ответ 1000! = 0
не работает Ваш код!
zer0mail
2176 / 1859 / 187
Регистрация: 03.07.2012
Сообщений: 6,617
Записей в блоге: 1
22.03.2016, 09:32     Циклы: вычислить факториал числа #10
Цитата Сообщение от _Faradey Посмотреть сообщение
не работает Ваш код!
А кто-то обещал что код будет работать для любых чисел? У вас-то вообще никакого кода нет - ни для 10! ни для 1000!, ни для 1010 !
_Faradey
0 / 0 / 0
Регистрация: 13.10.2015
Сообщений: 284
22.03.2016, 09:41     Циклы: вычислить факториал числа #11
А не подскажете, как вычислить (10е10)! не поделитесь кодом? )
zer0mail
2176 / 1859 / 187
Регистрация: 03.07.2012
Сообщений: 6,617
Записей в блоге: 1
22.03.2016, 09:57     Циклы: вычислить факториал числа #12
Не поделюсь. Любая [почти] программа работает с параметрами в ограниченном диапазоне, так что высказывания типа "не работает с 1000!" - пустышки. А у Вас с 1000! работает? Если "Да", тогда не работает с 1010! и нафига было встревать со своими 1000! ?

Люди написали работающий пример, которого ТС достаточно. Но находятся"вумники", желающися себя показать и пишут про 1000!
grizlik78
Эксперт C++
 Аватар для grizlik78
1882 / 1414 / 101
Регистрация: 29.05.2011
Сообщений: 2,958
23.03.2016, 03:27     Циклы: вычислить факториал числа #13
Цитата Сообщение от _Faradey Посмотреть сообщение
А не подскажете, как вычислить (10е10)! не поделитесь кодом? )
А не подскажете, зачем это может понадобиться — вычислять факториал, значение которого содержит более 300 миллионов цифр? А код-то не проблема, только не через циклы, а с использованием спец. библиотек
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <stdio.h>
#include <gmp.h>
#include <mpfr.h>
 
int main()
{
    mpfr_t x, s;
    mpfr_init2(x,50);
 
    mpfr_set_d(x, 10e10, MPFR_RNDD);
    mpfr_init2(s,50);
    mpfr_set_d(s, 1.0, MPFR_RNDD);
 
    mpfr_add(x, x, s, MPFR_RNDD);
    mpfr_gamma(s, x, MPFR_RNDD);
    mpfr_out_str (stdout, 10, 0, s, MPFR_RNDD);
    putchar ('\n');
 
    mpfr_clear (s);
    mpfr_clear (x);
 
    return 0;
}
(10·1010)! = 2.0985767·10323228496
_Faradey
0 / 0 / 0
Регистрация: 13.10.2015
Сообщений: 284
23.03.2016, 09:02     Циклы: вычислить факториал числа #14
Спасибо! Я просто недавно пересел на С++, до этого программил в матлабе и вольфраме, видел как-то тему на хабре, спор был, кто быстрее вычислит факториал вольфрам математика или с++, все склонялись к с++ Вот и стало интересно. Конечно это нигде не пригодится, как и вычисление мат. констант до милионного знака ) тем не менее идет гонка, кто больше знаков вычислит в числе пи
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.03.2016, 13:23     Циклы: вычислить факториал числа
Еще ссылки по теме:

C++ Используя циклы, вычислить произведение сумм двух чисел, инкрементируя оба числа с заданным шагом
Описать рекурсивные функции вещественного типа, вычисляющие факториал и двойной факториал заданного числа C++
C++ Вычислить факториал заданного числа при помощи рекурсивной функции

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

Или воспользуйтесь поиском по форуму:
zer0mail
2176 / 1859 / 187
Регистрация: 03.07.2012
Сообщений: 6,617
Записей в блоге: 1
23.03.2016, 13:23     Циклы: вычислить факториал числа #15
_Faradey, а попробуй на С+ написать программу, которая точно вычисляет факториалы 1000-5000 и обгоняет вольфрам. Думаю, ничего не получиться.
Yandex
Объявления
23.03.2016, 13:23     Циклы: вычислить факториал числа
Ответ Создать тему
Опции темы

Текущее время: 10:30. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru