Выяснить имеет ли уравнение действительные корни - 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, чтобы указать, что программа успешно завершилась.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д