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

Формула - C++

Войти
Регистрация
Восстановить пароль
 
UFObject
0 / 0 / 0
Регистрация: 16.12.2009
Сообщений: 3
16.12.2009, 23:11     Формула #1
Помогите пожалуйста с формулой. Получается ноль, а должно получится пи.
Миниатюры
Формула  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.12.2009, 23:11     Формула
Посмотрите здесь:

C++ Формула
C++ Формула
C++ Формула на с++
C++ формула в С++
Формула C++
C++ Формула в CodeBloks
Формула C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
M128K145
Эксперт C++
 Аватар для M128K145
8276 / 3495 / 142
Регистрация: 03.07.2009
Сообщений: 10,707
17.12.2009, 12:36     Формула #2
UFObject, приведи код, который так работает
Darky
Быдлокодер
 Аватар для Darky
507 / 294 / 45
Регистрация: 22.11.2009
Сообщений: 892
Завершенные тесты: 1
17.12.2009, 13:23     Формула #3
UFObject, могу предположить, что указан int вместо double
UFObject
0 / 0 / 0
Регистрация: 16.12.2009
Сообщений: 3
18.12.2009, 14:53  [ТС]     Формула #4
Вобщем переписал по другому, но результат не совсем тот.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
if (RadioButton4->Checked==true)
{
fact=1;
fact1=1;
t=0;
for (x=1; x<=5; ++x)
{
j=x-1;
if (j=0){j=1;}
for (n=1; n<=j; ++n){fact=fact*j;}
k=2*x;
for (m=1; m<=k; ++m){fact1=fact1*m;}
s=(fact*fact)/fact1;
t=t+s;
}
f=3*(sqrt(2*t));
Panel1->Caption=FloatToStrF(f,ffNumber,4,4);
}
Aye Aye
 Аватар для Aye Aye
367 / 281 / 36
Регистрация: 17.12.2009
Сообщений: 567
18.12.2009, 16:25     Формула #5
вот:
может можно сделать оптимальней... хз
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
#include <iostream>
#include <conio.h>
#include <math.h>
 
using namespace std;
 
int fact(int x)
{
    int n=1;
    if(!x)return 1;
    for (int i=1;i<x;i++)
    {
        n=n*i;
    }
    return n*x;
}
 
double F()
{
       double sum=0;
       for (int m=1;m<6;m++)
       {
           sum=sum + (double)(fact(m-1)*fact(m-1))/fact(2*m);
       }
           
       return 3*sqrt(2*sum);
}
       
int main()
{
    cout << F() << endl;
    getch();
}
считает правельно: 3.14149
Том Ардер
Модератор
 Аватар для Том Ардер
3645 / 2264 / 276
Регистрация: 15.06.2009
Сообщений: 3,977
18.12.2009, 20:03     Формула #6
Вычислять факториалы в подобных выражениях не есть оптимально. Попробуйте вместо 5 в верхнем пределе суммы взять 6, а лучше 7. Будет любопытный эффект. А потом на калькуляторе посмотрите величину соответствующих факториалов. И подумайте, что и почему.

А делать лучше так:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
const int N = 5;
 
double sum = 0.5;
double t = 0.5;  // first term in the sum, at m = 1
 
for( int m = 2; m < N; m++ )
{
  t *= double((m-1)*(m-1)) / double(2*m*(2*m-1));
  sum += t;
}
 
double F = 3*sqrt(2*sum);
 
cout << setprecision(10) << F << endl;
N = 7 даёт 3.1415882500
N = 10 даёт 3.1415926106 семь верных десятичных знаков
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.12.2009, 21:07     Формула
Еще ссылки по теме:

Формула! C++
C++ Формула Эйлера
C++ Формула
C++ Формула С++
формула на c++ C++

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

Или воспользуйтесь поиском по форуму:
UFObject
0 / 0 / 0
Регистрация: 16.12.2009
Сообщений: 3
18.12.2009, 21:07  [ТС]     Формула #7
Благодарю.
Yandex
Объявления
18.12.2009, 21:07     Формула
Ответ Создать тему
Опции темы

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