Ошибка нарушения сегмента (генерируется `core ') в программе c - PullRequest
1 голос
/ 06 апреля 2019

В настоящее время я работаю в программе c, которая вычисляет значение pi с помощью суммирования Лейбница, но я получаю сообщение об ошибке «нарушение сегмента (сгенерировано ядро)» в консоли после выполнения программы. Также я проверил подобные вопросы, но я все еще не могу вписать эту информацию в мою проблему. Вот код, который у меня есть:


#include <stdio.h> 

double calPi(int x);


double calPi(int x)
{
    double sum;
    int i;

    sum=0.0;

    for (i=0; i<=x; i++)
    {
        if ((i=2)||((i%2)==0))
        {
            sum=sum+(1/(2*i+1));
        }
        else sum=sum-(1/(2*i+1));
    }

return 4*sum;
}


int main(void)

{
    int x;
    double PI;

    printf("Enter the number of terms you want to calculate");
    scanf("%i",x);

    PI=calPi(x);

    printf("Pi value is: %f", PI);

    system("pause");

    return 0;
}

Заранее благодарим за любую подсказку, помощь или исправление.

1 Ответ

3 голосов
/ 06 апреля 2019

Это ваша проблема:

scanf("%i", x);

Должно быть

scanf("%i", &x);

Вам нужно взять адрес x, иначе просто использование x будет рассматриваться как указатель на то, кто что знает. Убедитесь, что вы компилируете с предупреждениями, так как ваш компилятор должен предупреждать вас о подобных вещах. Мой компилятор жалуется на

"строка формата"% i "требует аргумент типа 'int *', но переменный аргумент 1 имеет тип 'int'"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...