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

Нахождение числа Пи (500 членов ряда) - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.83
Vonka
 Аватар для Vonka
1 / 1 / 0
Регистрация: 13.09.2013
Сообщений: 90
11.10.2013, 03:47     Нахождение числа Пи (500 членов ряда) #1
Составить алгоритм вычисления числа Пи по формуле Грегори, взяв 500 членов ряда: П/4=1-1/3+1/5-1/7+...
Я не совсем понимаю как это, взяв 500 членов ряда, 500 цифр после запятой?) Как это оформить в данном коде?)

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 <stdio.h>  
float Pi,s1,s2,n;
    
void main ()
 
{
printf ("\nLet's begin\n");
n=0;
s1=0;
s2=0;
 
do
{
++n;
s1=(s2+4/(2*n-1));
n++;
s2=(s1-4/(2*n-1));
}
while ((s1-s2)>0.0001);
 
Pi=(s1+s2)/2;
printf ("\nChislo Pi=%1.4f",Pi);
printf ("\nBye!\n");
 
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.10.2013, 03:47     Нахождение числа Пи (500 членов ряда)
Посмотрите здесь:

C++ Составить программу вычисления числового ряда для известного числа членов ряда N
C++ суммирование членов ряда
C++ Составить программу для вычисления суммы данного ряда для указанного значения аргумента х, если известно количество N членов ряда.
Составить программу для вычисления суммы данного ряда для указанного значения аргумента х, если известно количество N членов ряда. C++
C++ Составить программу для вычисления суммы данного ряда для указанного значения аргумента х, если известно количество N членов ряда.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
11.10.2013, 05:17     Нахождение числа Пи (500 членов ряда) #2
C++
1
for (i=0; i<500; i++)
не?
Vonka
 Аватар для Vonka
1 / 1 / 0
Регистрация: 13.09.2013
Сообщений: 90
14.10.2013, 23:31  [ТС]     Нахождение числа Пи (500 членов ряда) #3
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
C++
1
for (i=0; i<500; i++)
не?
Можно конкретнее?)) Никак не доходит))
takeneo
3 / 3 / 3
Регистрация: 16.08.2013
Сообщений: 22
14.10.2013, 23:50     Нахождение числа Пи (500 членов ряда) #4
Ответ Кузи-домовёнка был бы верен если бы вы искали отдельно каждый знак после запятой.
В вашем примере надо изменить 22-ю строчку на printf ("\nChislo Pi=%1.500f",Pi);
Но это будет неверный ответ так как переменная float оганичена четырьмя или восемью байтами. Такое большое число (без запятой) не влезет. Правильный ответ пока не знаю сам новичёк)))
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
14.10.2013, 23:54     Нахождение числа Пи (500 членов ряда) #5
Цитата Сообщение от takeneo Посмотреть сообщение
Ответ Кузи-домовёнка был бы верен если бы вы искали отдельно каждый знак после запятой.
В вашем примере надо изменить 22-ю строчку на printf ("\nChislo Pi=%1.500f",Pi);
Но это будет неверный ответ так как переменная float оганичена четырьмя или восемью байтами. Такое большое число (без запятой) не влезет. Правильный ответ пока не знаю сам новичёк)))
При чём тут вообще знаки после запятой? Спрашивали не про знаки, а тупо про 500 членов ряда.
MastAKK
 Аватар для MastAKK
143 / 134 / 12
Регистрация: 13.10.2012
Сообщений: 586
Записей в блоге: 1
15.10.2013, 00:02     Нахождение числа Пи (500 членов ряда) #6
Как вариант, почитать про алгоритм "краник" и реализовать его.
Vonka
 Аватар для Vonka
1 / 1 / 0
Регистрация: 13.09.2013
Сообщений: 90
15.10.2013, 00:11  [ТС]     Нахождение числа Пи (500 членов ряда) #7
Цитата Сообщение от MastAKK Посмотреть сообщение
Как вариант, почитать про алгоритм "краник" и реализовать его.
Очень большой алгоритм)) мне бы поменьше все же))

Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
При чём тут вообще знаки после запятой? Спрашивали не про знаки, а тупо про 500 членов ряда.
подскажи как это в коде в полном будет выглядеть, пожалуйста)) я никак не пойму))
MastAKK
 Аватар для MastAKK
143 / 134 / 12
Регистрация: 13.10.2012
Сообщений: 586
Записей в блоге: 1
15.10.2013, 00:18     Нахождение числа Пи (500 членов ряда) #8
Vonka, алгоритм краника, вот как! Это довольно простой и действенный алгоритм для поискс членов ряда с заданной точностью
Vonka
 Аватар для Vonka
1 / 1 / 0
Регистрация: 13.09.2013
Сообщений: 90
15.10.2013, 00:22  [ТС]     Нахождение числа Пи (500 членов ряда) #9
Цитата Сообщение от MastAKK Посмотреть сообщение
Vonka, алгоритм краника, вот как! Это довольно простой и действенный алгоритм для поискс членов ряда с заданной точностью
Мне нужно это сделать используя только циклы))
MastAKK
 Аватар для MastAKK
143 / 134 / 12
Регистрация: 13.10.2012
Сообщений: 586
Записей в блоге: 1
15.10.2013, 00:30     Нахождение числа Пи (500 членов ряда) #10
Vonka, а какой алгоритм вы юзаете?)

Добавлено через 4 минуты
Все, извиняюсь,туплю. Не заметил про формулу Грегори
Vonka
 Аватар для Vonka
1 / 1 / 0
Регистрация: 13.09.2013
Сообщений: 90
15.10.2013, 00:30  [ТС]     Нахождение числа Пи (500 членов ряда) #11
Цитата Сообщение от MastAKK Посмотреть сообщение
Vonka, а какой алгоритм вы юзаете?)
Формулу Грегори, вверху написан код, но я никак не могу понять как его преобразовать что бы выполнялось условие (взяв 500 членов ряда), может есть идеи?))
Hoottie_McGOOB
107 / 105 / 5
Регистрация: 04.10.2013
Сообщений: 231
15.10.2013, 07:15     Нахождение числа Пи (500 членов ряда) #12
ну как-то так, думается мне..
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
#include "stdafx.h"
#include <stdio.h>  
#include <iostream>  
double Pi,s1,s2,n;
    
void main ()
 
{
    printf ("\nLet's begin\n");
    n=0;
    s1=0;
    s2=0;
 
    do
    {
        ++n;
        
        s1=(s2+4/(2*n-1));
        std::cout<<s1<<" ";
        n++;
        s2=(s1-4/(2*n-1));
        std::cout<<s2<<" ";
        std::cout<<n<<std::endl;
 
        std::cout<<std::endl;
    }
    //while ((s1-s2)>0.1);
    while (n<500);
 
 
 
    Pi=(s1+s2)/2;
    printf ("\nChislo Pi=%1.9f",Pi);
    printf ("\nBye!\n");
 
    system("pause");
}
vua72
410 / 410 / 83
Регистрация: 28.11.2010
Сообщений: 1,158
15.10.2013, 08:37     Нахождение числа Пи (500 членов ряда) #13
C++
1
2
3
4
5
6
7
8
9
#include <stdio.h>
int main() {
    long int i = 0, n = 500;
    double pi = 1.0;
    for (i = 2; i <= n; i += 2)
        pi += -1.0 / (2 * i - 1) + 1.0 / (2 * i + 1);
    printf("Pi=%1.10lf", pi * 4);
    return 0;
}
Vonka
 Аватар для Vonka
1 / 1 / 0
Регистрация: 13.09.2013
Сообщений: 90
15.10.2013, 19:39  [ТС]     Нахождение числа Пи (500 членов ряда) #14
Цитата Сообщение от vua72 Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
#include <stdio.h>
int main() {
    long int i = 0, n = 500;
    double pi = 1.0;
    for (i = 2; i <= n; i += 2)
        pi += -1.0 / (2 * i - 1) + 1.0 / (2 * i + 1);
    printf("Pi=%1.10lf", pi * 4);
    return 0;
}
Что-то в вычислениях не так)) Число пи выглядит так: 3,1415926535. А то что получилось в Миниатюрах внизу))

Цитата Сообщение от Hoottie_McGOOB Посмотреть сообщение
ну как-то так, думается мне..
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
#include "stdafx.h"
#include <stdio.h>  
#include <iostream>  
double Pi,s1,s2,n;
    
void main ()
 
{
    printf ("\nLet's begin\n");
    n=0;
    s1=0;
    s2=0;
 
    do
    {
        ++n;
        
        s1=(s2+4/(2*n-1));
        std::cout<<s1<<" ";
        n++;
        s2=(s1-4/(2*n-1));
        std::cout<<s2<<" ";
        std::cout<<n<<std::endl;
 
        std::cout<<std::endl;
    }
    //while ((s1-s2)>0.1);
    while (n<500);
 
 
 
    Pi=(s1+s2)/2;
    printf ("\nChislo Pi=%1.9f",Pi);
    printf ("\nBye!\n");
 
    system("pause");
}
Спасибо)) Я не думаю что нужно выводить каждый ряд)) Если убрать лишнее, я так понимаю будет выглядеть так?)) Тоесть совершенно не важно сколько знаков будет в итоге выведено после запятой?))
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <stdio.h>  
#include <iostream>  
double Pi,s1,s2,n;
void main ()
{
    printf ("\nLet's begin\n");
    n=0; s1=0; s2=0;
    do
    {
        ++n;
        s1=(s2+4/(2*n-1));
        n++;
        s2=(s1-4/(2*n-1));
    }
    while (n<500);
    Pi=(s1+s2)/2;
    printf ("\nChislo Pi=%1.9f",Pi);
    printf ("\nBye!\n");
}
Миниатюры
Нахождение числа Пи (500 членов ряда)  
Hoottie_McGOOB
107 / 105 / 5
Регистрация: 04.10.2013
Сообщений: 231
15.10.2013, 19:41     Нахождение числа Пи (500 членов ряда) #15
ну я так понял, что да... по заданию надо взять 500 членов ряда.. а уж сколько там знаков правильных - не особо важно..
Байт
 Аватар для Байт
13951 / 8782 / 1221
Регистрация: 24.12.2010
Сообщений: 15,891
15.10.2013, 22:02     Нахождение числа Пи (500 членов ряда) #16
Не совсем понимаю, даже с учетом исправления получается далеко не число Пи)) Может я что не так написал))
Если я правильно понял надо было просто поменять знаки местами, но это не помогло))
Не понял одного. Зачем это надо было писать в личку? Твои шансы получить ответ упали до нуля.
monolit
179 / 179 / 21
Регистрация: 24.03.2011
Сообщений: 641
Завершенные тесты: 1
15.10.2013, 22:17     Нахождение числа Пи (500 членов ряда) #17
C++
1
2
3
4
5
double sign = 1;
for(int i = 0; i<500; ++i) {
sum += sign/(2*i+1));
sign = -sign;
}
это для pi/4. Умножь полученное на 4 потом да и все.
vua72
410 / 410 / 83
Регистрация: 28.11.2010
Сообщений: 1,158
15.10.2013, 22:46     Нахождение числа Пи (500 членов ряда) #18
Что-то в вычислениях не так)) Число пи выглядит так: 3,1415926535. А то что получилось в Миниатюрах внизу))
Почитайте про формулу Грегори. Я вам формулу вашу в лоб переписал, можно красивей, но с вас и этого достаточно.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.10.2013, 22:52     Нахождение числа Пи (500 членов ряда)
Еще ссылки по теме:

C++ Суммирование членов ряда y=1^3+2^3+3^3+...+K^3
C++ определить число членов ряда, необходимых для расчета с заданной погрешностью суммы членов ряда:
Подсчитать сумму членов ряда с точностью до 0.000001 и сумму первых 10 членов ряда C++

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

Или воспользуйтесь поиском по форуму:
palva
 Аватар для palva
2372 / 1594 / 190
Регистрация: 08.06.2007
Сообщений: 6,362
Записей в блоге: 4
15.10.2013, 22:52     Нахождение числа Пи (500 членов ряда) #19
Цитата Сообщение от takeneo Посмотреть сообщение
Такое большое число (без запятой) не влезет.
500-й член ряда будет равен примерно 0.001. Все прекрасно влезет, только точность будет три знака после запятой. Но ведь достигать определенную точность не требуется. Просуммировать 500 членов ряда, а точность - какая получится.
Yandex
Объявления
15.10.2013, 22:52     Нахождение числа Пи (500 членов ряда)
Ответ Создать тему
Опции темы

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