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

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

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

Листинг программы
  1. float discr( float a,float b,float c);
  2. float findx(float b, float a, float c);
  3. int main()
  4. {
  5. float a,b,c,x1,x2,x3,d;
  6. printf("a,b,c:");
  7. scanf("%f%f%f",&a,&b,&c);
  8. d=discr(a,b,c);
  9. printf("\nDiscriminant:%.f",d);
  10. x1=findx(x1,x2,x3));
  11. x2=findx(x1,x2,x3));
  12. x3=findx(x1,x2,x3));
  13. printf("%.f%.f%.f",findx(x1,x2,x3));
  14. getch();
  15. return 0;
  16. }
  17. float discr(float a, float b, float c)
  18. {
  19. return(b*b-4*a*c);
  20. }
  21.  
  22. float findx(float x1, float x2, float x3) // не могу понять где ошибка, именно в функции
  23. {
  24. float a,b,c;
  25. if (discr(a,b,c) < 0)
  26. {
  27. printf("Discriminant ne mojet bit' otricatelnim");
  28. exit(1);
  29. }
  30. else if(discr(a,b,c) > 0)
  31. {
  32. x1=(-b+sqrt(discr(a,b,c)))/2*a;
  33. x2=(-b-sqrt(discr(a,b,c)))/2*a;
  34. return x1,x2;
  35. }
  36. else if (discr(a,b,c) == 0)
  37. {
  38. x3=-b/(2*a);
  39. return x3;
  40. }
  41. }

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

textual
Листинг программы
  1. float discr(float a, float b, float c)
  2. {
  3.     return (b*b-4.*a*c);
  4. }
  5. int findx(float a, float b, float c,float *x1, float *x2) // не могу понять где ошибка, именно в функции
  6. {
  7.     double d;d=discr(a,b,c);
  8.     if ( d< 0 || a==0)
  9.         return 0;
  10.     else if(d > 0)
  11.     {
  12.         *x1=(-b+sqrt(d))/(2.*a);
  13.         *x2=(-b-sqrt(d))/(2.*a);
  14.         return 2;
  15.     }
  16.     *x1=*x2=-b/(2*a);
  17.     return 1;
  18.  }
  19. int main()
  20. {
  21.     int n;
  22.     float a,b,c,x1,x2,x3,d;
  23.     printf("a,b,c:");
  24.     scanf("%f%f%f",&a,&b,&c);
  25.     d=discr(a,b,c);
  26.     printf("\nDiscriminant:%.f",d);
  27.     n=findx(a,b,c,&x1,&x2);
  28.     switch(n)
  29.     {
  30.      case 0:printf("no solution");break;
  31.      case 1: printf("one root %f",x1);break;
  32.      case 2: printf("two roots %f %f",x1,x2);
  33.     }
  34.     getch();
  35.     return 0;
  36. }

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

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

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


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

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

10   голосов , оценка 4.2 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы