Выяснить имеет ли уравнение действительные корни - C (СИ)
Формулировка задачи:
ЗАДАНИЕ
Даны действительные числа a, b, c (a ≠ 0, ). , проверить при вводе Выяснить имеет ли
уравнение a*x^2+bx+c=0 действительные корни Если действительные корни .
имеются то найти их В противном случае ответом должно служить сообщение что ,
действительных корней нет .
Уже 100 разпереписывал код, но все равно считает либо неверно либо вообще не считает либо пишет одновременно "действительных корней нет" и "х=... у=" Нужно что бы выводилось одно из двух сообщений
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <windows.h>
int main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
float a, b, c, x, y,d;
printf("Введите а,b,c");
scanf("%f%f%f",&a,&b,&c);
if
(d=pow(b,2)-4*a*c)
(d<0);
printf ("действительных корней нет");
if ((pow(b,2)-4*a*c)>=0)
a != 0;
else
{
((x= ((-b + sqrt(pow(b,2)-4*a*c))/2*a)) && (y= ((-b - sqrt(pow(b,2)-4*a*c))/2*a)));
printf("y=%f""x=%f",y,x);
}
return 0;
}Решение задачи: «Выяснить имеет ли уравнение действительные корни»
textual
Листинг программы
#include <stdio.h>
#include <math.h>
#define EPS 1.0e-4
int main() {
float a, b, c;
scanf("%f%f%f", &a, &b, &c);
if (abs(a) > EPS) {
float d = b*b - 4*a*c;
if (abs(d) < EPS) {
printf("one solution: %f\n", -b/(2*a));
} else if (d > 0) {
float droot = sqrtf(d);
printf("x1 = %f\nx2 = %f\n", (-b+droot)/(2*a), (-b-droot)/(2*a));
} else {
printf("No solutions\n");
}
}
return 0;
}
Объяснение кода листинга программы
В этом коде:
- Задаются три переменные типа float: a, b, c. Значения этих переменных вводятся с клавиатуры.
- Вычисляется дискриминант: d = bb - 4a*c.
- Если 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, то есть уравнение не имеет действительных корней. - Если abs(a) <= EPS, то есть если a равно нулю, то выводится сообщение
No solutions, так как в этом случае уравнение имеет бесконечное количество решений. - Возвращается 0, чтобы указать, что программа успешно завершилась.