Решение квадратного уравнения (найти ошибку) - C (СИ)

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

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

float discr( float a,float b,float c);
float findx(float b, float a, float c);
 
int main()
{
    float a,b,c,x1,x2,x3,d;
    printf("a,b,c:");
    scanf("%f%f%f",&a,&b,&c);
    d=discr(a,b,c);
    printf("\nDiscriminant:%.f",d);
        x1=findx(x1,x2,x3));
        x2=findx(x1,x2,x3));
        x3=findx(x1,x2,x3));
    printf("%.f%.f%.f",findx(x1,x2,x3));
    getch();
    return 0;
}
 
float discr(float a, float b, float c)
{
    return(b*b-4*a*c);
}

float findx(float x1, float x2, float x3) // не могу понять где ошибка, именно в функции
{
    float a,b,c;
    if (discr(a,b,c) < 0)
    {
        printf("Discriminant ne mojet bit' otricatelnim");
        exit(1);
    }
    else if(discr(a,b,c) > 0)
    {
        x1=(-b+sqrt(discr(a,b,c)))/2*a;
        x2=(-b-sqrt(discr(a,b,c)))/2*a;
        return x1,x2;
    }
    else if (discr(a,b,c) == 0)
    {
        x3=-b/(2*a);
    return x3;
    }
}

Решение задачи: «Решение квадратного уравнения (найти ошибку)»

textual
Листинг программы
float discr(float a, float b, float c)
{
    return (b*b-4.*a*c);
}
int findx(float a, float b, float c,float *x1, float *x2) // не могу понять где ошибка, именно в функции
{
    double d;d=discr(a,b,c);
    if ( d< 0 || a==0)
        return 0;
    else if(d > 0)
    {
        *x1=(-b+sqrt(d))/(2.*a);
        *x2=(-b-sqrt(d))/(2.*a);
        return 2;
    }
    *x1=*x2=-b/(2*a);
    return 1;
 }
int main()
{
    int n;
    float a,b,c,x1,x2,x3,d;
    printf("a,b,c:");
    scanf("%f%f%f",&a,&b,&c);
    d=discr(a,b,c);
    printf("\nDiscriminant:%.f",d);
    n=findx(a,b,c,&x1,&x2);
    switch(n)
    {
     case 0:printf("no solution");break;
     case 1: printf("one root %f",x1);break;
     case 2: printf("two roots %f %f",x1,x2);
    }
    getch();
    return 0;
}

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

  1. В функции discr вычисляется дискриминант квадратного уравнения.
  2. В функции findx проверяется, есть ли решение у квадратного уравнения, и если есть, то вычисляются корни.
  3. В функции main вводятся значения a, b, c с клавиатуры.
  4. Вычисляется дискриминант и выводится на экран.
  5. Вызывается функция findx, в которую передаются значения a, b, c, а также адреса переменных x1 и x2.
  6. В зависимости от результата работы функции findx выводится соответствующее сообщение об ошибке или о наличии корней.

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


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

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

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