Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.92/26: Рейтинг темы: голосов - 26, средняя оценка - 4.92
1 / 1 / 1
Регистрация: 13.09.2013
Сообщений: 90
1

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

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

Author24 — интернет-сервис помощи студентам
Составить алгоритм вычисления числа Пи по формуле Грегори, взяв 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.10.2013, 03:47
Ответы с готовыми решениями:

Нахождение суммы требуемого числа членов ряда
Написать программу для нахождения суммы требуемого числа членов ряда. Программа должна запросить...

Нахождение суммы n членов ряда
Помогите с написанием правильной программы. Спасибо!!!!

Нахождение произведение n членов ряда
Дано натуральное число n. Вычислить произведение n членов ряда:(2/3)*...

Нахождение суммы членов ряда (Turbo Basic)
Помогите написать программу решения суммы членов ряда.Сверху суммы n,снизу i=0 при этом n=12

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

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

Добавлено через 4 минуты
Все, извиняюсь,туплю. Не заметил про формулу Грегори
0
1 / 1 / 1
Регистрация: 13.09.2013
Сообщений: 90
15.10.2013, 00:30  [ТС] 11
Цитата Сообщение от MastAKK Посмотреть сообщение
Vonka, а какой алгоритм вы юзаете?)
Формулу Грегори, вверху написан код, но я никак не могу понять как его преобразовать что бы выполнялось условие (взяв 500 членов ряда), может есть идеи?))
0
109 / 107 / 44
Регистрация: 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
419 / 418 / 167
Регистрация: 28.11.2010
Сообщений: 1,183
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
1 / 1 / 1
Регистрация: 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");
}
Миниатюры
Нахождение числа Пи (500 членов ряда)  
0
109 / 107 / 44
Регистрация: 04.10.2013
Сообщений: 231
15.10.2013, 19:41 15
ну я так понял, что да... по заданию надо взять 500 членов ряда.. а уж сколько там знаков правильных - не особо важно..
1
Диссидент
Эксперт C
27706 / 17322 / 3812
Регистрация: 24.12.2010
Сообщений: 38,979
15.10.2013, 22:02 16
Не совсем понимаю, даже с учетом исправления получается далеко не число Пи)) Может я что не так написал))
Если я правильно понял надо было просто поменять знаки местами, но это не помогло))
Не понял одного. Зачем это надо было писать в личку? Твои шансы получить ответ упали до нуля.
0
188 / 187 / 46
Регистрация: 24.03.2011
Сообщений: 670
15.10.2013, 22:17 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 потом да и все.
1
419 / 418 / 167
Регистрация: 28.11.2010
Сообщений: 1,183
15.10.2013, 22:46 18
Что-то в вычислениях не так)) Число пи выглядит так: 3,1415926535. А то что получилось в Миниатюрах внизу))
Почитайте про формулу Грегори. Я вам формулу вашу в лоб переписал, можно красивей, но с вас и этого достаточно.
0
4240 / 2937 / 687
Регистрация: 08.06.2007
Сообщений: 9,817
Записей в блоге: 4
15.10.2013, 22:52 19
Цитата Сообщение от takeneo Посмотреть сообщение
Такое большое число (без запятой) не влезет.
500-й член ряда будет равен примерно 0.001. Все прекрасно влезет, только точность будет три знака после запятой. Но ведь достигать определенную точность не требуется. Просуммировать 500 членов ряда, а точность - какая получится.
2
15.10.2013, 22:52
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.10.2013, 22:52
Помогаю со студенческими работами здесь

Функция нахождение членов ряда. Чередование знаков
Добрый день помогите пж решить задание. Мне нужно реализовать функцию нахождения суммы n членов...

Вычисление числового ряда для известного числа членов ряда
Буду очень признателен, нужно к завтрашнему дню.

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

Составить программу вычисления числового ряда для известного числа членов ряда N
составить программу вычисления числового ряда для известного числа членов ряда N....

Составить программу вычисления числового ряда для известного числа членов ряда N
Вечер добрый. Составить программу вычисления числового ряда для известного числа членов ряда...

Составить программу вычисления числового ряда для известного числа членов ряда N
Задача №7 Составить программу вычисления числового ряда для известного числа членов ряда N. Перед...


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

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru