Вывод дробных корней квадратного уравнения - C (СИ)
Формулировка задачи:
Не выводит дробные числа x1 , x2. На примере этого уравнения 3x^2+7x+2=0 . C целыми числами работает нормально . Подскажите пожалуйста в чем здесь ошибка.
#include "stdio.h" #include <math.h> #include <conio.h> int main() { float a=0,b=0,c=0,x1,x2,x; float d=0,f; printf("Nahogdenie kornej kvadratnogo uravneniy "); printf("\nVvedide znachenie a : "); scanf("%f",&a); printf("Vvedide znachenie b : "); scanf("%f",&b); printf("Vvedide znachenie c : "); scanf("%f",&c); d=b*b-4*a*c; printf("D = %f", d); f=sqrt(d); if (d>0){ x1=(-b+f)/2*a; x2=(-b-f)/2*a; printf("\nKvadratny koren x1 = %f ",x1); printf("\nKvadratny koren x2 = %f ",x2); getchar(); } else if (d==0) { x=(-b+f)/2*a; printf("\nKvadratny koren x = %f", x); getchar(); } else { printf("\nNet kornej"); getchar(); } getchar(); return 0; }
Решение задачи: «Вывод дробных корней квадратного уравнения»
textual
Листинг программы
//f=sqrt(d); if (d>0) { f=sqrt(d); x1=(-b+f)/2*a; x2=(-b-f)/2*a; printf("\nKvadratny koren x1 = %f ",x1); printf("\nKvadratny koren x2 = %f ",x2); getchar(); } else if ((d>0) && (d<=1E-8)) { x=(-b)/2*a; printf("\nKvadratny koren x = %f", x); getchar(); } else { printf("\nNet kornej"); getchar(); }
Объяснение кода листинга программы
- Сначала проверяется условие
d > 0
. Если оно истинно, то выполняется блок кода внутри этого условия. - Внутри блока кода вычисляется
f = sqrt(d)
. - Затем вычисляются
x1 = (-b + f) / (2 * a)
иx2 = (-b - f) / (2 * a)
. - Выводятся значения
x1
иx2
с помощью функцииprintf
. - Если условие
d > 0
не выполняется, то проверяется условиеd > 0 && d <= 1E-8
. - Если это условие истинно, то вычисляется
x = (-b) / (2 * a)
и выводится значениеx
с помощью функцииprintf
. - Если ни одно из условий не выполняется, то выводится сообщение
Net kornej
с помощью функцииprintf
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д