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

программа вычисления факториала любого числа - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 25, средняя оценка - 4.72
elena3
0 / 0 / 0
Регистрация: 08.12.2012
Сообщений: 5
08.12.2012, 15:06     программа вычисления факториала любого числа #1
помогите написать программу на C++!!!
надо написать программу, которая вычислит факториал любого числа. данные читает из файла и результат записывает обратно в файл
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.12.2012, 15:06     программа вычисления факториала любого числа
Посмотрите здесь:

C++ Нерекурсионное вычисления факториала
C++ Напишите программу вычисления суммы: 1! + 2! + 3! + … + n!, используя функцию вычисления факториала числа k.
Рекурсивная функция вычисления факториала C++
C++ Описать функцию возведения любого натурального числа n в куб без операции умножения, пользуясь следующим свойством: куб любого числа n равен
вычисления факториала C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11822 / 6801 / 769
Регистрация: 27.09.2012
Сообщений: 16,869
Записей в блоге: 2
Завершенные тесты: 1
08.12.2012, 15:14     программа вычисления факториала любого числа #2
Цитата Сообщение от elena3 Посмотреть сообщение
вычислит факториал любого числа
чему равен факториал бесконечности?
v.a.l.i.d
 Аватар для v.a.l.i.d
412 / 377 / 10
Регистрация: 21.09.2012
Сообщений: 913
08.12.2012, 15:29     программа вычисления факториала любого числа #3
Цитата Сообщение от Croessmah Посмотреть сообщение
чему равен факториал бесконечности?
∞ * (∞-1)!
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11822 / 6801 / 769
Регистрация: 27.09.2012
Сообщений: 16,869
Записей в блоге: 2
Завершенные тесты: 1
08.12.2012, 15:32     программа вычисления факториала любого числа #4

Не по теме:

Цитата Сообщение от v.a.l.i.d Посмотреть сообщение
∞ * (∞-1)!
Не нужно приводить формулы, приведите конкретный пример, да и еще посчитайте сколько понадобиться оперативной памяти и времени для рассчета.



У Вас в любом случае должен быть какой-то предел
elena3
0 / 0 / 0
Регистрация: 08.12.2012
Сообщений: 5
08.12.2012, 21:58  [ТС]     программа вычисления факториала любого числа #5
факториал бесконечности равен бесконечности
(SkyNet)
 Аватар для (SkyNet)
22 / 40 / 6
Регистрация: 25.10.2011
Сообщений: 175
08.12.2012, 23:08     программа вычисления факториала любого числа #6
даже калькулятор Windows-а при fact(10000) пишет overflow(переполнение)
Venzo
08.12.2012, 23:14
  #7

Не по теме:

Цитата Сообщение от (SkyNet) Посмотреть сообщение
даже калькулятор Windows-а при fact(10000) пишет overflow(переполнение)
даже...?))) если б вы сказали, например, даже матлаб, или другой мат пакет - другой дело) калькулятор винды врядли показатель)

v.a.l.i.d
 Аватар для v.a.l.i.d
412 / 377 / 10
Регистрация: 21.09.2012
Сообщений: 913
08.12.2012, 23:19     программа вычисления факториала любого числа #8
у меня никакого переполнения в калькуляторе нет:
fact(10000) = 2,8462596809170545189064132121199e+35659
Wolkodav
 Аватар для Wolkodav
599 / 452 / 32
Регистрация: 18.09.2012
Сообщений: 1,685
08.12.2012, 23:37     программа вычисления факториала любого числа #9
Вас помочь попросили, а не хвастаться возможностями своих систем). У меня питон факториал 2000 считал)) Рекурсивно!! Долгова то но норм было дело. Не важно. Я как понял тут что-то типо работы с длинной арифметикой?
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
09.12.2012, 00:54     программа вычисления факториала любого числа #10
Croessmah, тут задача на длинную арифметику.
activnaya
 Аватар для activnaya
255 / 45 / 2
Регистрация: 24.11.2012
Сообщений: 466
09.12.2012, 05:27     программа вычисления факториала любого числа #11
C
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <gmp.h>
 
int main()
{
    mpz_t rop;
    unsigned long int x = 2000;
 
    mpz_init(rop);
    mpz_fac_ui(rop, x);
    gmp_printf("%Zd", rop);
 
    return 0;
}
Кликните здесь для просмотра всего текста
331627509245063324117539338057632403828111720810578039457193543706038077905600822400273230859732592255402352941225834109258084817415293796131386633526343688905634058556163940605117252571870647856393544045405243957467037674108722970434684158343752431580877533645127487995436859247408032408946561507233250652797655757179671536718689359056112815871601717232657156110004214012420433842573712700175883547796899921283528996665853405579854903657366350133386550401172012152635488038268152152246920995206031564418565480675946497051552288205234899995726450814065536678969532101467622671332026831552205194494461618239275204026529722631502574752048296064750927394165856283531779574482876314596450373991327334177263608852490093506621610144459709412707821313732563831572302019949914958316470942774473870327985549674298608839376326824152478834387469595829257740574539837501585815468136294217949972399813599481016556563876034227312912250384709872909626622461971076605931550201895135583165357871492290916779049702247094611937607785165110684432255905648736266530377384650390788049524600712549402614566072254136302754913671583406097831074945282217490781347709693241556111339828051358600690594619965257310741177081519922564516778571458056602185654760952377463016679422488444485798349801548032620829890965857381751888619376692828279888453584639896594213952984465291092009103710046149449915828588050761867924946385180879874512891408019340074625920057098729578599643650655895612410231018690556060308783629110505601245908998383410799367902052076858669183477906558544700148692656924631933337612428097420067172846361939249698628468719993450393889367270487127172734561700354867477509102955523953547941107421913301356819541091941462766417542161587625262858089801222443890248677182054959415751991701271767571787495861619665931878855141835782092601482071777331735396034304969082070589958701381980813035590160762908388574561288217698136182483576739218303118414719133986892842344000779246691209766731651433494437473235636572048844478331854941693030124531676232745367879322847473824485092283139952509732505979127031047683601481191102229253372697693823670057565612400290576043852852902937606479533458179666123839605262549107186663869354766108455046198102084050635827676526589492393249519685954171672419329530683673495544004586359838161043059449826627530605423580755894108278880427825951089880635410567917950974017780688782869810219010900148352061688883720250310665922068601483649830532782088263536558043605686781284169217133047141176312175895777122637584753123517230990549829210134687304205898014418063875382664169897704237759406280877253702265426530580862379301422675821187143502918637636340300173251818262076039747369595202642632364145446851113427202150458383851010136941313034856221916631623892632765815355011276307825059969158824533457435437863683173730673296589355199694458236873508830278657700879749889992343555566240682834763784685183844973648873952475103224222110561201295829657191368108693825475764118886879346725191246192151144738836269591643672490071653428228152661247800463922544945170363723627940757784542091048305461656190622174286981602973324046520201992813854882681951007282869701070737500927666487502174775372742351508748246720274170031581122805896178122160747437947510950620938556674581252518376682157712807861499255876132352950422346387878954850885764466136290394127665978044202092281337987115900896264878942413210454925003566670632909441579372986743421470507213588932019580723064781498429522595589012754823971773325722910325760929790733299545056388362640474650245080809469116072632087494143973000704111418595530278827357654819182002449697761111346318195282761590964189790958117338627206088910432945244978535147014112442143055486089639578378347325323595763291438925288393986256273242862775563140463830389168421633113445636309571965978466338551492316196335675355138403425804162919837822266909521770153175338730284610841886554138329171951332117895728541662084823682817932512931237521541926970269703299477643823386483008871530373405666383868294088487730721762268849023084934661194260180272613802108005078215741006054848201347859578102770707780655512772540501674332396066253216415004808772403047611929032210154385353138685538486425570790795341176519571188683739880683895792743749683498142923292196309777090143936843655333359307820181312993455024206044563340578606962471961505603394899523321800434359967256623927196435402872055475012079854331970674797313126813523653744085662263206768837585132782896252333284341812977624697079543436003492343159239674763638912115285406657783646213911247447051255226342701239527018127045491648045932248108858674600952306793175967755581011679940005249806303763141344412269037034987355799916009259248075052485541568266281760815446308305406677412630124441864204108373119093130001154470560277773724378067188899770851056727276781247198832857695844217588895160467868204810010047816462358220838532488134270834079868486632162720208823308727819085378845469131556021728873121907393965209260229101477527080930865364979858554010577450279289814603688431821508637246216967872282169347370599286277112447690920902988320166830170273420259765671709863311216349502171264426827119650264054228231759630874475301847194095524263411498469508073390080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Process returned 0 (0x0) execution time : 0.015 s
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11822 / 6801 / 769
Регистрация: 27.09.2012
Сообщений: 16,869
Записей в блоге: 2
Завершенные тесты: 1
09.12.2012, 06:38     программа вычисления факториала любого числа #12
Цитата Сообщение от go Посмотреть сообщение
Croessmah, тут задача на длинную арифметику.
я в курсе, но если нет предела, то всё равно упремся в нехватку памяти или время выполнения. Ибо факториал 20000 это одно, а факториал числа, в котором несколько тысяч знаков?
elena3
0 / 0 / 0
Регистрация: 08.12.2012
Сообщений: 5
10.12.2012, 16:31  [ТС]     программа вычисления факториала любого числа #13
подскажите, пожалуйста, хотя бы как к этой части программы дописать чтение из файла и запись результата обратно в файл!!!!


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include <stdio.h>
#include <stdlib.h>
 typedef  double  udouble_t;
udouble_t fact_while(size_t);
udouble_t fact_rec(size_t);
 
int main()
{
        size_t n;
        puts("Input n: ");
        scanf("%u", &n);
        printf("Calculating with `while' loop: %llu\n", fact_while(n));
        printf("Calculating with recursion: %llu\n", fact_rec(n));
        system("pause");
        exit(0);
}
 
udouble_t fact_while(size_t n)
{
        udouble_t result = 1;
        while(n)
                result *= n--;
        return result;
}
 
udouble_t fact_rec(size_t n)
{
        return n ? n * fact_rec(n - 1) : 1;
}
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
11.12.2012, 11:27     программа вычисления факториала любого числа #14
elena3, Язык? Ваш код написан на Си...
elena3
0 / 0 / 0
Регистрация: 08.12.2012
Сообщений: 5
11.12.2012, 17:18  [ТС]     программа вычисления факториала любого числа #15
Цитата Сообщение от ForEveR Посмотреть сообщение
elena3, Язык? Ваш код написан на Си...
нет, на Microsoft Visual Studio
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11822 / 6801 / 769
Регистрация: 27.09.2012
Сообщений: 16,869
Записей в блоге: 2
Завершенные тесты: 1
11.12.2012, 17:29     программа вычисления факториала любого числа #16
Цитата Сообщение от elena3 Посмотреть сообщение
Microsoft Visual Studio
MSVS - это IDE, а C - это язык программирования
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.01.2013, 13:40     программа вычисления факториала любого числа
Еще ссылки по теме:

C++ Программа для вычисления факториала
Написать программу для вычисления факториала числа с заданной точностью C++
Функция вычисления факториала C++

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

Или воспользуйтесь поиском по форуму:
elena3
0 / 0 / 0
Регистрация: 08.12.2012
Сообщений: 5
15.01.2013, 13:40  [ТС]     программа вычисления факториала любого числа #17
Ребята, кого заинтересовала моя программа, скидываю вам её
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
#include <iostream>
#include <vector>
#include <algorithm>
#include <functional>
#include <iostream> 
#include <string>
#include <fstream>
//#include "fl.h"
 
using namespace std;
 
 
void multiply(vector<int> &result, int number);
 
void multiply(vector<int> &result, int number) // функция для перемножения 2х чисел
                                               // записываем поразрядно в вектор: десятки сотни и так далее 
                                               // и увеличиваем размер вектора
                                               // пока последний элемент больше 9ки
                                               // (т.е. есть десятки сотни и все такое)
{
    transform(result.begin(), result.end(), result.begin(), bind2nd(multiplies<int>(), number));
    for(vector<int>::size_type i = 0; i < result.size() - 1; i++) 
    {
        result[i + 1] += result[i] / 10; 
        result[i] %= 10;
    }
    while(result.back() > 9) 
    {
        result.push_back(result.back() / 10); 
        result[result.size() - 2] %= 10; 
    }
}
int main()
{
    int n;
    char str[256]; 
    int a;
    cout << "Factorial. Choose a method of input a number to calculate factorial" << endl;
    
    for ( ; ; )
    {
        cout << "1. Type using keyboard" << endl;
        cout << "2. Read from file" << endl;
        cin >> a;
        if (a == 1)
        {
            cout << "Enter the number: " ;
            cin >> n;
            break;
        }   
        else if (a == 2)
        {
            ifstream fact1; 
            fact1.open("input.txt"); 
                fact1 >> str; //считали строку шз файла(до разделяющего символа)
                    sscanf(str, "%d", &n);  //Cчитали число из строки. 
                                            //Исходя из выбранного метода считывания 
                                            //не требуется "защита от дурака" на ввод 
                                            //дробных чисел, для которых, как следует 
                                            //из определения, факториал так же 
                                            //не определен
            fact1.close(); // закрыли файл
            break;
        }
        else
        {
            cout << "You entered wrong number. Retry" << endl;
        }
    }
    ofstream fact2;
    fact2.open("output.txt"); // открыли файл вывода
    fact2 << "Factorial " << n << " = " ; // записали результат (подготовка)
    cout << "Factorial " << n << " = " ;  // вывели результат на экран (подготовка)
 
    vector<int> result(1, 1); // создали интовый вектор
    for(n; n > 0; multiply(result, n--)); // перемножаем числа - собсна сам факториал
    transform(result.rbegin(), result.rend(), ostream_iterator<char>(fact2), bind2nd(plus<int>(), '0')); // записали основное число в файл
    transform(result.rbegin(), result.rend(), ostream_iterator<char>(cout), bind2nd(plus<int>(), '0')); // вывели основное число на экран
 
    fact2.close(); // закрыли файл
    
    cout << endl; // << "Press Enter to exit" << endl;
    system("pause");
 
    return 0;
}
напоминаю, она работает на Visual Studio 2008
Yandex
Объявления
15.01.2013, 13:40     программа вычисления факториала любого числа
Ответ Создать тему
Опции темы

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