Ошибка сегментирования - C (СИ) (78828)

Узнай цену своей работы

Формулировка задачи:

Добрый вечер. Есть код на C:
#include <stdio.h>
#include <math.h>
int main (void)
{
    double a, b, c, d, x[2];
    
    printf ("Введите коэффициент a: ");
    scanf ("%f", a);
 
    printf ("Введите коэффициент b: ");
    scanf ("%f", b);
 
    printf ("Введите коэффициент c: ");
    scanf ("%f", c);
 
    d = (b * b) - 4 * a * c;
 
    if (d < 0)
    {
        printf ("Корни этого уравнения являются мнимыми.\n");
        return 0;
 
    }else if (d == 0){
        printf ("Корень из этого уравнения равен 0.\n");
    }
 
    d = sqrt (d);
 
    x[0] = (d - b) / 2;
    x[1] = (-d - b) / 2;
 
    printf ("Корни уравнения: %2.f & %2.f\n", x[0], x[1]);
 
    return 0;
}
Компилирую с флагом -lm, т.к. без него gcc не видит библиотеку math.h Компиляция проходит без ошибок. При запуске он запрашивает первый коэффициент, я ввожу и получаю сообщение "Ошибка сегментирования". Насколько я понял, он по какой-то причине не может записать полученное от пользователя значение в переменную. Подскажите, как решить эту проблему?

Решение задачи: «Ошибка сегментирования»

textual
Листинг программы
scanf ("%lf", &a);
scanf ("%lf", &b);
scanf ("%lf", &c);

Объяснение кода листинга программы

  1. Вводится значение переменной a с помощью функции scanf.
  2. Вводится значение переменной b с помощью функции scanf.
  3. Вводится значение переменной c с помощью функции scanf.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 3.929 из 5
Похожие ответы