Нахождение корней квадратного трехчлена - C (СИ)
Формулировка задачи:
Помогите найти ошибки. Хотел написать программу для нахождения корней квадратного трехчлена, но возникли трудности....
#include<stdio.h>
#include<math.h>
main()
{
printf("Vvedite a:\n");
double a,b,c;
scanf("%lf",&a);
printf("Vvedite b:\n");
scanf("%lf",&b);
printf("Vvedite c:\n");
scanf("%lf",&c);
double d,x1,x2;
d=sqrt(b*b-4*a*c);
if(d<0) printf("Korney net!\n");
if(d>0) { x1=(-b-d)/2*a; x2=(-b+d)/a*2; printf("Korny: %f\t%f",x1,x2); }
if(d=0) { x1=(-b/2*a); printf("Koren: %f",x1); }
}Решение задачи: «Нахождение корней квадратного трехчлена»
textual
Листинг программы
d = b * b - 4.0 * a * c;
if( d < 0.0 ) {
puts("No solutions!");
} else {
x1 = x2 = 0.5 / a;
b = -b;
x1 *= b - d;
x2 *= b + d;
printf("Solution 1: %f\nSolution 2: %f\n", x1, x2);
}
Объяснение кода листинга программы
- Начинается с проверки дискриминанта
d(сначала приведенного к типуdouble, так как это более точное представление действительного числа, чемint). Еслиdменьше нуля, то выводится сообщениеNo solutions!и код завершается. - Если
dбольше или равно нулю, то находятся корниx1иx2с помощью формулыx1 = (-b + sqrt(d)) / (2*a)иx2 = (-b - sqrt(d)) / (2*a). Значенияb,dиaобновляются (переприсваиваются их абсолютные значения), чтобы правильно работать с отрицательными числами. - Используя формулу
x1иx2, вычисляются значения корнейx1иx2. - С помощью функции
printfвыводятся значения корней на экран.