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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.83
Vonka
1 / 1 / 0
Регистрация: 13.09.2013
Сообщений: 90
#1

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

11.10.2013, 03:47. Просмотров 1570. Ответов 18
Метки нет (Все метки)

Составить алгоритм вычисления числа Пи по формуле Грегори, взяв 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++ программа на нахождение суммы n червых членов последовательность фибоначи
C++ Составить программу для вычисления суммы данного ряда для указанного значения аргумента х, если известно количество N членов ряда.
Составить программу для вычисления суммы данного ряда для указанного значения аргумента х, если известно количество N членов ряда. C++
C++ Составить программу для вычисления суммы данного ряда для указанного значения аргумента х, если известно количество N членов ряда.
C++ определить число членов ряда, необходимых для расчета с заданной погрешностью суммы членов ряда:
Подсчитать сумму членов ряда с точностью до 0.000001 и сумму первых 10 членов ряда C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kuzia domovenok
1889 / 1744 / 117
Регистрация: 25.03.2012
Сообщений: 5,917
Записей в блоге: 1
11.10.2013, 05:17     Нахождение числа Пи (500 членов ряда) #2
C++
1
for (i=0; i<500; i++)
не?
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
1889 / 1744 / 117
Регистрация: 25.03.2012
Сообщений: 5,917
Записей в блоге: 1
14.10.2013, 23:54     Нахождение числа Пи (500 членов ряда) #5
Цитата Сообщение от takeneo Посмотреть сообщение
Ответ Кузи-домовёнка был бы верен если бы вы искали отдельно каждый знак после запятой.
В вашем примере надо изменить 22-ю строчку на printf ("\nChislo Pi=%1.500f",Pi);
Но это будет неверный ответ так как переменная float оганичена четырьмя или восемью байтами. Такое большое число (без запятой) не влезет. Правильный ответ пока не знаю сам новичёк)))
При чём тут вообще знаки после запятой? Спрашивали не про знаки, а тупо про 500 членов ряда.
MastAKK
145 / 136 / 12
Регистрация: 13.10.2012
Сообщений: 586
Записей в блоге: 1
15.10.2013, 00:02     Нахождение числа Пи (500 членов ряда) #6
Как вариант, почитать про алгоритм "краник" и реализовать его.
Vonka
1 / 1 / 0
Регистрация: 13.09.2013
Сообщений: 90
15.10.2013, 00:11  [ТС]     Нахождение числа Пи (500 членов ряда) #7
Цитата Сообщение от MastAKK Посмотреть сообщение
Как вариант, почитать про алгоритм "краник" и реализовать его.
Очень большой алгоритм)) мне бы поменьше все же))

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

Добавлено через 4 минуты
Все, извиняюсь,туплю. Не заметил про формулу Грегори
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
415 / 415 / 85
Регистрация: 28.11.2010
Сообщений: 1,183
Завершенные тесты: 1
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
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 членов ряда.. а уж сколько там знаков правильных - не особо важно..
Байт
Эксперт C
15539 / 9881 / 1484
Регистрация: 24.12.2010
Сообщений: 18,479
15.10.2013, 22:02     Нахождение числа Пи (500 членов ряда) #16
Не совсем понимаю, даже с учетом исправления получается далеко не число Пи)) Может я что не так написал))
Если я правильно понял надо было просто поменять знаки местами, но это не помогло))
Не понял одного. Зачем это надо было писать в личку? Твои шансы получить ответ упали до нуля.
monolit
180 / 180 / 21
Регистрация: 24.03.2011
Сообщений: 652
Завершенные тесты: 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
415 / 415 / 85
Регистрация: 28.11.2010
Сообщений: 1,183
Завершенные тесты: 1
15.10.2013, 22:46     Нахождение числа Пи (500 членов ряда) #18
Что-то в вычислениях не так)) Число пи выглядит так: 3,1415926535. А то что получилось в Миниатюрах внизу))
Почитайте про формулу Грегори. Я вам формулу вашу в лоб переписал, можно красивей, но с вас и этого достаточно.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.10.2013, 22:52     Нахождение числа Пи (500 членов ряда)
Еще ссылки по теме:

Найти 10 членов ряда, абсолютную разность между табличной функцией и суммой ряда C++
Нахождение суммы n первых членов последовательности 1/2+3/4+5/6+... C++
Как реализовать нахождение количества членов полинома? C++
Определить количество членов ряда, необходимых для вычисления числа Пи с заданной точностью ε по формуле C++
Определить: 10 членов ряда; абсолютную разность между табличной функцией и суммой ряда C++

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

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

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