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

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

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

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

11.10.2013, 03:47. Просмотров 1631. Ответов 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++ определить число членов ряда, необходимых для расчета с заданной погрешностью суммы членов ряда:
Подсчитать сумму членов ряда с точностью до 0.000001 и сумму первых 10 членов ряда C++
Определить количество членов ряда, необходимых для вычисления числа Пи с заданной точностью ε по формуле C++
Найти 10 членов ряда, абсолютную разность между табличной функцией и суммой ряда C++
Определить: 10 членов ряда; абсолютную разность между табличной функцией и суммой ряда C++
C++ Составить программу для вычисления суммы данного ряда для указанного значения аргумента х, если известно количество N членов ряда.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kuzia domovenok
1890 / 1745 / 118
Регистрация: 25.03.2012
Сообщений: 5,924
Записей в блоге: 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
1890 / 1745 / 118
Регистрация: 25.03.2012
Сообщений: 5,924
Записей в блоге: 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 членов ряда)  
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.10.2013, 19:41     Нахождение числа Пи (500 членов ряда)
Еще ссылки по теме:
Составить программу для вычисления суммы данного ряда для указанного значения аргумента х, если известно количество N членов ряда. C++
C++ Составить программу для вычисления суммы данного ряда для указанного значения аргумента х, если известно количество N членов ряда.
Нахождение суммы n первых членов последовательности 1/2+3/4+5/6+... C++
Как реализовать нахождение количества членов полинома? C++
C++ программа на нахождение суммы n червых членов последовательность фибоначи

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

Или воспользуйтесь поиском по форуму:
Hoottie_McGOOB
107 / 105 / 5
Регистрация: 04.10.2013
Сообщений: 231
15.10.2013, 19:41     Нахождение числа Пи (500 членов ряда) #15
ну я так понял, что да... по заданию надо взять 500 членов ряда.. а уж сколько там знаков правильных - не особо важно..
Yandex
Объявления
15.10.2013, 19:41     Нахождение числа Пи (500 членов ряда)
Ответ Создать тему
Опции темы

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