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

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

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

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

11.10.2013, 03:47. Просмотров 1737. Ответов 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");
 
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.10.2013, 03:47
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Нахождение числа Пи (500 членов ряда) (C++):

Составить программу вычисления числового ряда для известного числа членов ряда N - C++
Пожалуйста, как на C++ выполнить это задание, много времени потратил и все никак. Работает частично, но что-то я упускаю. Составить...

определить число членов ряда, необходимых для расчета с заданной погрешностью суммы членов ряда: - C++
определить число членов ряда, необходимых для расчета с заданной погрешностью суммы членов ряда: 1-1/3+1/5-1/7+…..: (-1)^N/(2*N+1);...

Подсчитать сумму членов ряда с точностью до 0.000001 и сумму первых 10 членов ряда - C++
Добавлено через 10 часов 32 минуты Для ряда, члены которого вычисляются по формуле, соответствующей Вашему индивидуальному заданию,...

Определить количество членов ряда, необходимых для вычисления числа Пи с заданной точностью ε по формуле - C++
Помогите, пожалуйста, нужно определить количество членов ряда, необходимых для вычисления числа Пи с заданной точностью ε по...

Найти 10 членов ряда, абсолютную разность между табличной функцией и суммой ряда - C++
Требуется определить: 10 членов ряда, абсолютную разность между табличной функцией и суммой ряда. Для вычисления члена ряда нужно...

Определить: 10 членов ряда; абсолютную разность между табличной функцией и суммой ряда - C++
D(n)=-((x-1)*(n+1))/(n+2) Функцию pow() в программе не применять! #include&lt;iostream&gt; #include&lt;math.h&gt; using namespace std; int...

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

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

Добавлено через 4 минуты
Все, извиняюсь,туплю. Не заметил про формулу Грегори
0
Vonka
1 / 1 / 0
Регистрация: 13.09.2013
Сообщений: 90
15.10.2013, 00:30  [ТС] #11
Цитата Сообщение от MastAKK Посмотреть сообщение
Vonka, а какой алгоритм вы юзаете?)
Формулу Грегори, вверху написан код, но я никак не могу понять как его преобразовать что бы выполнялось условие (взяв 500 членов ряда), может есть идеи?))
0
Hoottie_McGOOB
107 / 105 / 5
Регистрация: 04.10.2013
Сообщений: 231
15.10.2013, 07:15 #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");
}
1
vua72
415 / 415 / 85
Регистрация: 28.11.2010
Сообщений: 1,183
Завершенные тесты: 1
15.10.2013, 08:37 #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;
}
1
Vonka
1 / 1 / 0
Регистрация: 13.09.2013
Сообщений: 90
15.10.2013, 19:39  [ТС] #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");
}
0
Миниатюры
Нахождение числа Пи (500 членов ряда)  
Hoottie_McGOOB
107 / 105 / 5
Регистрация: 04.10.2013
Сообщений: 231
15.10.2013, 19:41 #15
ну я так понял, что да... по заданию надо взять 500 членов ряда.. а уж сколько там знаков правильных - не особо важно..
1
15.10.2013, 19:41
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.10.2013, 19:41
Привет! Вот еще темы с ответами:

Составить программу для вычисления суммы данного ряда для указанного значения аргумента х, если известно количество N членов ряда. - C++
Составить программу для вычисления суммы данного ряда для указанного значения аргумента х, если известно количество N членов ряда. ...

Составить программу для вычисления суммы данного ряда для указанного значения аргумента х, если известно количество N членов ряда. - C++
Составить программу для вычисления суммы данного ряда для указанного значения аргумента х, если известно количество N членов ряда. ...

Составить программу для вычисления суммы данного ряда для указанного значения аргумента х, если известно количество N членов ряда. - C++
Составить программу для вычисления суммы данного ряда для указанного значения аргумента х, если известно количество N членов ряда. Сума...

Нахождение суммы n первых членов последовательности 1/2+3/4+5/6+... - C++
написать программу (C++) нахождения суммы n первых членов последовательности 1/2+3/4+5/6...


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

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

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