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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.91
vovelo
Сообщений: n/a
#1

функция факториала - C++

19.10.2010, 21:43. Просмотров 1364. Ответов 1
Метки нет (Все метки)

Задание:
Вычислить и вывести на экран в виде таблицы значения функции, заданной с помощью ряда Тейлора, на интервале от хнач до хкон с шагом dx с точностью e. Таблицу снабдить заголовком и шапкой. Каждая строка должна содержать значение аргумента, значение функции и количество просуммирорванных членов ряда.
В моем варианте присутствует факториал в знаменателе дроби - (2n+1)!
Я в С++ не силен, до этого работал только в Паскале, но нам дают задания, которые надо делать исключительно на си.

Вот что у меня получилось:

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
#include <iostream>
#include <cmath>
#include <clocale>
#include <stdio.h>
using namespace std;
unsigned long fact(unsigned int n)
{
if(n<=1)
return 1;
return n* fact(n-1);
}
 
int main ()
{
    setlocale(LC_ALL, "russian");
float sum=0,arg=0,x=0,xnach=0, xkonech=0, shag=0, toch=0;
    int n;
    
        cout<<"\nВведите x начальное:"; cin>>xnach;
        cout<<"Введите шаг:"; cin>>shag;
        cout<<"Введите х конечное:"; cin>>xkonech;
        cout<<"Введите точность:"; cin>>toch;
 
    cout<<"\nx\tn\tsum\tsin"; 
    
    for(float x=xnach; x<=xkonech; x+=shag)
    {
        n=0;
        arg=(pow((float)(-1), n)*(pow(x,2*n)))/(fact(2*n+1));
        while(abs(arg)>toch)
        {
            sum+=arg;       
            n++;
            arg=(pow((float)(-1), n)*(pow(x,2*n)))/(fact(2*n+1));
        }
        cout.precision(4);
        cout<<"\n"<<x<<"\t"<<n<<"\t"<<sum<<"\t"<<(sin((double)x)/x);
 
    }
    cout<<endl;
    return 0;
}
Препод сказал заменить рекурсивную функцию факториала на "расширенный вид", ибо у меня выскакивает ошибка после подсчета по формуле вот на этом моменте на скрине.
Подскажите приблизительно, как написать правильно эту самую функцию...
Миниатюры
функция факториала  
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.10.2010, 21:43
Здравствуйте! Я подобрал для вас темы с ответами на вопрос функция факториала (C++):

Функция нахождения факториала - C++
Кто может исправить ошибки? голова уже вообще не работает #include &lt;iostream&gt; using namespace std; int factorial (int n) { ...

Функция вычисления факториала - C++
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;math.h&gt; #include &lt;iomanip&gt; using namespace std; int main()...

Рекурсивная функция вычисления факториала - C++
Напишите рекурсивную функцию int factorial(int n), которая считает факториал. примеры 1)5 120 2)0 1 3)2 2

Функция для вычисления факториала - C++
определить функцию вычисления факториала числа. Рассчитать с помощью нее: 2x5! + 3x9! \ 7! +10! помогите пожалуйста с программой в С++ ...

Рекурсивная функция вычисления факториала - C++
В коде #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &quot;fact.h&quot; int main() { using namespace std; cout&lt;&lt;&quot;Enter the...

Составьте программу, вычисляющую функцию y = x! (факториал). Функция расчета факториала должна быть - C++
Составьте программу, вычисляющую функцию y = x! (факториал). Функция расчета факториала должна быть рекурсивной и вызываться из функции...

1
accept
4822 / 3243 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
20.10.2010, 07:24 #2
факториал 12 поместится в unsigned long, если он четыре байта
возможно тебе предлагают применить длинную арифметику (если там n больше 12)

Python
1
2
3
4
5
6
7
8
9
10
>>> def fact(n):
...   prod = 1
...   for i in range(1, n + 1):
...     prod *= i
...   return prod
...
>>> fact(6), fact(3), fact(5)
(720, 6, 120)
>>> fact(100)
93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864000000000000000000000000
C
1
2
3
4
5
6
7
8
#include <stdio.h>
#include <float.h>
 
int main(void)
{
    printf("%f" "\n", DBL_MAX);
    return 0;
}
Код
[guest@localhost tests]$ ./t
179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368.000000
[guest@localhost tests]$
Python
1
2
3
4
5
6
7
8
>>> a = 179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368
>>> for i in range(1, 700):
...   if fact(i) > a:
...     print(i, fact(i))
...     break
... 
171 1241018070217667823424840524103103992616605577501693185388951803611996075221691752992751978120487585576464959501670387052809889858690710767331242032218484364310473577889968548278290754541561964852153468318044293239598173696899657235903947616152278558180061176365108428800000000000000000000000000000000000000000
>>>
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.10.2010, 07:24
Привет! Вот еще темы с ответами:

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

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

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

Нахождение факториала - C++
#include &lt;iostream&gt; #include &lt;iomanip&gt; #include &lt;conio.h&gt; using namespace std; unsigned long factroial(unsigned long); int...


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

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

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