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

Как находят факториал? - C++

Восстановить пароль Регистрация
 
l2ded
 Аватар для l2ded
80 / 68 / 11
Регистрация: 10.05.2011
Сообщений: 284
30.11.2012, 11:37     Как находят факториал? #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
#include <iostream.h> 
#include <iomanip.h> 
#include <math.h> 
int main() 
{ 
double a,b,h,x,y,s,k; 
int n,i; 
cout << "Vvedite a,b,n\n"; 
cin >> a >> b >> n; 
x=a; 
h=(b-a)/10; 
while (x<=b) 
{ 
s=k=1; 
y=(1-pow(x,2)/2)*cos(x)-x/2*sin(x); 
for (i=1; i<=n; i++) 
{ 
k/=2*i; 
s += pow(-1,i)*(2*pow(i,2)+1)*pow(x,2*i)*k; 
} 
cout << setw(15) << x << setw(15) << y << setw(15) << s << endl; 
x += h; 
} 
return 0; 
}
Мне не понятен этот момент
C++
1
k/=2*i;
в примере написано (2*n)!, т.е факториал 2*n=>
Как должно быть:
k=1 i=1 => k=k/2*1=1/2=0.5
k=0.5 i=2 => k=0.5/2*2=0.5/4=0.125
k=0.125 i=3 =>k=0.125/2*3=0.0283.

Как на самом деле:
k=1 i=1 => k=0.5
k=0.5 i=2 => k=0.5
k=0.5 i=3 =>k=0.75
Почему так?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
l2ded
 Аватар для l2ded
80 / 68 / 11
Регистрация: 10.05.2011
Сообщений: 284
01.12.2012, 00:18  [ТС]     Как находят факториал? #2
Цитата Сообщение от l2ded Посмотреть сообщение
Вот код:
Мне не понятен этот момент
C++
1
k/=2*i;
в примере написано (2*n)!, т.е факториал 2*n=>
Как должно быть:
k=1 i=1 => k=k/2*1=1/2=0.5
k=0.5 i=2 => k=0.5/2*2=0.5/4=0.125
k=0.125 i=3 =>k=0.125/2*3=0.0283.

Как на самом деле:
k=1 i=1 => k=0.5
k=0.5 i=2 => k=0.5
k=0.5 i=3 =>k=0.75
Почему так?
АУУУ ЧЕЛОВЕКИ ПОМОГИТЕ!
Ev[G]eN
Эксперт С++
 Аватар для Ev[G]eN
5093 / 1531 / 381
Регистрация: 23.01.2011
Сообщений: 3,148
01.12.2012, 00:32     Как находят факториал? #3
Цитата Сообщение от l2ded Посмотреть сообщение
Как находят факториал?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
 
int factorial(int n) {
    return !n ? 1 : n * factorial(n - 1);
}
 
int main() {
    int n = 0;
    
    std::cin >> n;
    std::cout << factorial(n) << std::endl;
    
    system("pause");
    return 0;
}
l2ded
 Аватар для l2ded
80 / 68 / 11
Регистрация: 10.05.2011
Сообщений: 284
02.12.2012, 00:39  [ТС]     Как находят факториал? #4
Цитата Сообщение от l2ded Посмотреть сообщение
Вот код:
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
#include <iostream.h> 
#include <iomanip.h> 
#include <math.h> 
int main() 
{ 
double a,b,h,x,y,s,k; 
int n,i; 
cout << "Vvedite a,b,n\n"; 
cin >> a >> b >> n; 
x=a; 
h=(b-a)/10; 
while (x<=b) 
{ 
s=k=1; 
y=(1-pow(x,2)/2)*cos(x)-x/2*sin(x); 
for (i=1; i<=n; i++) 
{ 
k/=2*i; 
s += pow(-1,i)*(2*pow(i,2)+1)*pow(x,2*i)*k; 
} 
cout << setw(15) << x << setw(15) << y << setw(15) << s << endl; 
x += h; 
} 
return 0; 
}
Мне не понятен этот момент
C++
1
k/=2*i;
в примере написано (2*n)!, т.е факториал 2*n=>
Как должно быть:
k=1 i=1 => k=k/2*1=1/2=0.5
k=0.5 i=2 => k=0.5/2*2=0.5/4=0.125
k=0.125 i=3 =>k=0.125/2*3=0.0283.

Как на самом деле:
k=1 i=1 => k=0.5
k=0.5 i=2 => k=0.5
k=0.5 i=3 =>k=0.75
Почему так?
Почему так?
David Sylva
 Аватар для David Sylva
1281 / 943 / 51
Регистрация: 17.05.2012
Сообщений: 2,686
02.12.2012, 11:19     Как находят факториал? #5
Цитата Сообщение от l2ded Посмотреть сообщение
Почему так?

Не по теме:

Это ты спроси, у того кто писал этот код.Ev[G]eN выкатил тебе образец того как надо это делать.

Alexxfed132
Сообщений: n/a
02.12.2012, 12:01     Как находят факториал? #6
Находи факториал с помощью рекурсии, не ошибешься
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.12.2012, 12:06     Как находят факториал?
Еще ссылки по теме:

C++ Как в языке С++ обозначить факториал?
Как использовать двойной факториал в С++ с использованием только if и for? C++
C++ написать функцию по одномерному массиву, которая среди элементов находят сумму кратных введённому числу k

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

Или воспользуйтесь поиском по форуму:
-=ЮрА=-
Заблокирован
Автор FAQ
02.12.2012, 12:06     Как находят факториал? #7
l2ded, думаю у тебя задание найти сумму ряда с факториалами так?
Сам факториал находи вот так (сможешь иметь ответ вплоть до 100!, дальше уже длинная арифметика нужна)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
using namespace std;
 
double fact(double val)
{
    double ret = 1 < val ? val : 1;
    if(1 < (val -= 1))
        ret *= fact(val);
    return ret;
}
 
int main()
{
    cout<<"100! = "<<fact(100)<<endl;
    return 0;
}
Миниатюры
Как находят факториал?  
Yandex
Объявления
02.12.2012, 12:06     Как находят факториал?
Ответ Создать тему
Опции темы

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