Выяснить имеет ли уравнение действительные корни - C (СИ)

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

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

ЗАДАНИЕ Даны действительные числа a, b, c (a ≠ 0, ). , проверить при вводе Выяснить имеет ли уравнение a*x^2+bx+c=0 действительные корни Если действительные корни . имеются то найти их В противном случае ответом должно служить сообщение что , действительных корней нет . Уже 100 разпереписывал код, но все равно считает либо неверно либо вообще не считает либо пишет одновременно "действительных корней нет" и "х=... у=" Нужно что бы выводилось одно из двух сообщений
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <math.h>
  4. #include <windows.h>
  5. int main()
  6. {
  7. SetConsoleCP(1251);
  8. SetConsoleOutputCP(1251);
  9. float a, b, c, x, y,d;
  10. printf("Введите а,b,c");
  11. scanf("%f%f%f",&a,&b,&c);
  12. if
  13. (d=pow(b,2)-4*a*c)
  14. (d<0);
  15. printf ("действительных корней нет");
  16. if ((pow(b,2)-4*a*c)>=0)
  17. a != 0;
  18. else
  19. {
  20. ((x= ((-b + sqrt(pow(b,2)-4*a*c))/2*a)) && (y= ((-b - sqrt(pow(b,2)-4*a*c))/2*a)));
  21. printf("y=%f""x=%f",y,x);
  22. }
  23. return 0;
  24. }

Решение задачи: «Выяснить имеет ли уравнение действительные корни»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <math.h>
  3. #define EPS 1.0e-4
  4. int main() {
  5.     float a, b, c;
  6.     scanf("%f%f%f", &a, &b, &c);
  7.     if (abs(a) > EPS) {
  8.         float d = b*b - 4*a*c;
  9.         if (abs(d) < EPS) {
  10.             printf("one solution: %f\n", -b/(2*a));
  11.         } else if (d > 0) {
  12.             float droot = sqrtf(d);
  13.             printf("x1 = %f\nx2 = %f\n", (-b+droot)/(2*a), (-b-droot)/(2*a));
  14.         } else {
  15.             printf("No solutions\n");
  16.         }
  17.     }
  18.     return 0;
  19. }

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

В этом коде:

  1. Задаются три переменные типа float: a, b, c. Значения этих переменных вводятся с клавиатуры.
  2. Вычисляется дискриминант: d = bb - 4a*c.
  3. Если abs(a) > EPS, то есть если a не равно нулю, то выполняются следующие действия: 3.1. Если abs(d) < EPS, то есть если d близко к нулю, то выводится одно решение уравнения: x = -b/(2a). 3.2. Если d > 0, то есть если дискриминант больше нуля, то вычисляется корни уравнения: x1 = (-b+sqrt(d))/(2a) и x2 = (-b-sqrt(d))/(2*a). Выводятся значения корней. 3.3. Если d < 0, то есть если дискриминант меньше нуля, то выводится сообщение No solutions, то есть уравнение не имеет действительных корней.
  4. Если abs(a) <= EPS, то есть если a равно нулю, то выводится сообщение No solutions, так как в этом случае уравнение имеет бесконечное количество решений.
  5. Возвращается 0, чтобы указать, что программа успешно завершилась.

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


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

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

15   голосов , оценка 3.933 из 5

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

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

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