нужно найти Пи по формуле Грегори, взяв 50 членов ряда
Составил алгоритм, на бумаге ,так сказать ,вроде все работает, a на практике выводит -129
Не понимаю, почему алгоритм не работает, объясните
#include<stdio.h>
int main()
{
float P = 1, n, k = 3;
for (int i = 1; i <= 500; i++)
{
n = (1 / k) * (-1);
P += n;
k = (k + 2) * (-1);
}
printf("Pi = %f", 4 * P);
}
C/C++
Программирование на си
double p = 0;
for (int i = 99; i >= 1; i -= 2) {
p = 1.0 / i - p;
}
printf("Pi = %lf", 4.0 * p);
Зачем все эти манипуляции с умножением на -1? Для того, чтобы поменять знак, умножать не требуется. Даже если делать в лоб, получится: double p = 0, s = 1.0, k = 1.0;
for (int i = 0; i < 50; ++i) {
p += s / k;
s = -s; // Вот так меняется знак
k += 2.0;
}
Использовать float бессмысленно: слишком большая погрешность вычислений. Это может потребоваться только в IoT - когда каждый байт экономим. #include
int main() {
long double P = 0;
int sign = 1;
for (int i = 1; i
тут вроде другая формула
П/4=1-1/3+1/5-1/7+...
n вы меняете знак каждый раз *-1 но и k вы тоже почему-то меняете
П/4=1-1/3+1/5-1/7+...
n вы меняете знак каждый раз *-1 но и k вы тоже почему-то меняете
У Вас π вообще не вычисляется! Да, кстати, и вычислять его как сумму ряда
4•Σ(n=1;50)(-1)ⁿ⁺¹/(2n-1) совершенно бессмысленно, так как ошибка вычислений получается слишком большой! А вычислять надо грамотно, если что, то есть вовсе даже не как в тех ахинеях, которые Вам выше нашарашили, а, например, так:
4•Σ(n=1;50)(-1)ⁿ⁺¹/(2n-1) совершенно бессмысленно, так как ошибка вычислений получается слишком большой! А вычислять надо грамотно, если что, то есть вовсе даже не как в тех ахинеях, которые Вам выше нашарашили, а, например, так:
#include
#define π 3.1415926535897932
int main()
{
int i, n;
double znak, znam, s, t;
for (;;)
{
printf("n: ");
scanf("%d", &n);
s = 0.; znam = znak = 1.;
for (i = 1; i
Похожие вопросы
- День добрый \[-_-]/ вопрос по вузовскому программированию на си(C)
- Программирование на си в Визуал студио
- Программирование на Си
- Как написать код по этому заданию? Программирование на Си
- Помогите с программированием на Си
- Помогите с программированием на Си Работа с последовательностями элементов
- Помогите Программирование на Си (одномерные массивы)
- Помогите с программированием на си
- Программирование на СИ "Написать программу подсчёта суммы нечётных элементов из 20 введенных"
- Программирование на си
for (int i = 1; i <= 500; i++)
{
P += n;
k = (k + 2) * (-1);
Если изменять вот так, то не особо помогает- выводит -662,...
К- это знаменатель его я и изменяю(3,-5,7,-8)