Почему я продолжаю получать отрицательные значения? - PullRequest
0 голосов
/ 06 октября 2019

Я делаю алгоритм Лейбница в c для расчета пирога. Я продолжаю получать отрицательный результат. Это из-за типа Long Double, который я использовал?

#include <stdio.h>
#include<math.h>

int main()
{
int iterations;
int counter = 1;
long double nextnum = 1.;
long double answer=0.0;
long double temp = 0.0;

printf("Iterations: ");
scanf("%d",&iterations);

while (counter <= iterations)
{
    if (counter%2 != 1)
    {
        answer = temp + (1/nextnum*4);
        printf("%1Lf\n",answer);
        nextnum = nextnum +2;
        temp = answer;
        counter++;
    }

    if (counter%2 == 1)
    {
        answer = temp - (1/nextnum*4);
        printf("%1Lf\n",answer);
        nextnum = nextnum +2;
        temp = answer;
        counter++;
    }

}

return 0;
}

1 Ответ

0 голосов
/ 06 октября 2019

Вы умножаетесь на 4 в неправильном месте. Попробуйте вычислить пи / а, как в исходной формуле

#include <stdio.h>
#include<math.h>

int main()
{
    int iterations;
    int counter = 1;
    long double nextnum = 3.0;
    long double answer = 0.0;
    long double temp = 1.0;

    printf("Iterations: ");
    scanf_s("%d", &iterations);

    while (counter <= iterations)
    {
        if (counter % 2 != 1)
        {
            answer = temp + (1 / nextnum);
            printf("%1Lf\n", answer);

            temp = answer;
        }

        else
        {
            answer = temp - (1 / nextnum);
            printf("%1Lf\n", answer);
            temp = answer;
        }
        nextnum += 2;
        counter++;
    }

    printf("\n Answer: %1Lf\n", 4 * answer);

    return 0;
}
...