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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 86, средняя оценка - 4.85
HaosBee
0 / 0 / 0
Регистрация: 19.06.2011
Сообщений: 6
#1

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

19.06.2011, 19:58. Просмотров 14760. Ответов 14
Метки нет (Все метки)

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);
}
Пришлите плиз код полностью.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.06.2011, 19:58
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Циклы: вычислить факториал числа (C++):

Вычислить факториал числа - C++
Требуется по заданному числу 1&lt;=N&lt;=12 посчитать его факториал. Учтите, что факториал растет очень бысто и уже при N = 13 результат выйдет...

Вычислить факториал натурального числа n из отрезка [1;20] - C++
Создайте программу, вычисляющую факториал натурального числа n из отрезка , которое пользователь введёт с клавиатуры. Если число будет...

Вычислить факториал числа через оператор do while - C++
Итак, задача следующая: Написать программу вычисления факториала целого положительного числа N! Решить эту задачу в двух вариантах: с...

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

вычислить факториал числа n, где n вводисться с клавиатуры. n! = 1 * 2 * 3 *...* n - C++
вычислить факториал числа n, где n вводисться с клавиатуры. n! = 1 * 2 * 3 *...* n

Вычислить факториал заданного числа при помощи рекурсивной функции - C++
Разбирался с рекурсией и вот вдруг возникла проблема. При компиляции выдает совсем не тот результат которые ожидается, ище выдает...

14
OstapBender
584 / 523 / 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);
}
1
Mиxaил
533 / 438 / 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;
}
1
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;
}
1
HaosBee
0 / 0 / 0
Регистрация: 19.06.2011
Сообщений: 6
19.06.2011, 20:06  [ТС] #5
Спасибо Большое ))
0
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?
0
diagon
Higher
1930 / 1196 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
19.06.2011, 20:13 #7
Цитата Сообщение от mpg756 Посмотреть сообщение
Mиxaил, а зачем здесь 2 раза long?
Чтобы большее число влезло.
Очевидно же.
2
grizlik78
Эксперт С++
1966 / 1459 / 120
Регистрация: 29.05.2011
Сообщений: 3,018
19.06.2011, 20:14 #8
mpg756, это от жадности
long long - это нестандартный тип, размер которого обычно 64 бита. Стандартный тип int64_t, к сожалению, поддерживается тоже далеко не всеми компиляторами. Есть ещё и другие расширения, например __int64
2
_Faradey
2 / 2 / 0
Регистрация: 13.10.2015
Сообщений: 402
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
не работает Ваш код!
0
zer0mail
2373 / 2003 / 199
Регистрация: 03.07.2012
Сообщений: 7,192
Записей в блоге: 1
22.03.2016, 09:32 #10
Цитата Сообщение от _Faradey Посмотреть сообщение
не работает Ваш код!
А кто-то обещал что код будет работать для любых чисел? У вас-то вообще никакого кода нет - ни для 10! ни для 1000!, ни для 1010 !
0
_Faradey
2 / 2 / 0
Регистрация: 13.10.2015
Сообщений: 402
22.03.2016, 09:41 #11
А не подскажете, как вычислить (10е10)! не поделитесь кодом? )
0
zer0mail
2373 / 2003 / 199
Регистрация: 03.07.2012
Сообщений: 7,192
Записей в блоге: 1
22.03.2016, 09:57 #12
Не поделюсь. Любая [почти] программа работает с параметрами в ограниченном диапазоне, так что высказывания типа "не работает с 1000!" - пустышки. А у Вас с 1000! работает? Если "Да", тогда не работает с 1010! и нафига было встревать со своими 1000! ?

Люди написали работающий пример, которого ТС достаточно. Но находятся"вумники", желающися себя показать и пишут про 1000!
0
grizlik78
Эксперт С++
1966 / 1459 / 120
Регистрация: 29.05.2011
Сообщений: 3,018
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
1
_Faradey
2 / 2 / 0
Регистрация: 13.10.2015
Сообщений: 402
23.03.2016, 09:02 #14
Спасибо! Я просто недавно пересел на С++, до этого программил в матлабе и вольфраме, видел как-то тему на хабре, спор был, кто быстрее вычислит факториал вольфрам математика или с++, все склонялись к с++ Вот и стало интересно. Конечно это нигде не пригодится, как и вычисление мат. констант до милионного знака ) тем не менее идет гонка, кто больше знаков вычислит в числе пи
0
zer0mail
2373 / 2003 / 199
Регистрация: 03.07.2012
Сообщений: 7,192
Записей в блоге: 1
23.03.2016, 13:23 #15
_Faradey, а попробуй на С+ написать программу, которая точно вычисляет факториалы 1000-5000 и обгоняет вольфрам. Думаю, ничего не получиться.
0
23.03.2016, 13:23
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.03.2016, 13:23
Привет! Вот еще темы с ответами:

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

Используя циклы, вычислить произведение сумм двух чисел, инкрементируя оба числа с заданным шагом - C++
(1+0.1)(2+0.2)....(9+0.9); Создавайте темы с осмысленными и понятными названиями - это серьезно повышает шансы, что на ваш вопрос...

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

Факториал числа - C++
Напишите функцию для нахождения факториала числа. Результат возвращайте через заголовок функции. Объясните, что означает вернуть...


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

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

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