Функция вычисления корней квадратного уравнения - C (СИ)
Формулировка задачи:
Вот выполняю задание: "Написать функцию вычисления корней уравнения a*x*x + b*x + c = 0. Значение
квадратного корня от x возвращает функция стандартной библиотеки (необходимо включить
в программу math.h)
double sqrt(double x)"
Программа работает, но считает коряво, точнее вообще не правильно.
как я понял принтф в функции не работает? тогда как вывеси два и более значений? Помогите исправить ошибки, прочитал несколько статей но конкретных ответов не нашел.
double qvadr(double a, double b, double c);
double qvadr(double a, double b, double c){ double d,x1,x2;
d=b*b-4*a*c;
if (d>0) {x1=(-b+sqrt(d))/(2*a);printf("%f",x1);
x2=(-b-sqrt(d))/(2*a);printf("%f",x2);
}
if (d=0) {x1=(-b+sqrt(d))/(2*a);printf("%f",x1); }
if (d<0) printf("net kornei"); return x1;
}
int main()
{ double a,b,c;
scanf("%f%f%f",&a,&b,&c);
printf("%d",qvadr(a,b,c));
system("PAUSE");
return 0;
}Решение задачи: «Функция вычисления корней квадратного уравнения»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
void qvadr(float a, float b, float c){ float d,x1,x2;
d=b*b-4*a*c;
if (d>0) {x1=(-b+sqrt(d))/(2*a);printf("%f",x1);
x2=(-b-sqrt(d))/(2*a);printf("%f",x2);
}
if (d=0) {x1=(-b+sqrt(d))/(2*a);printf("%f",x1); }
if (d<0) printf("net kornei");
}
int main()
{ float a,b,c;
scanf("%f%f%f",&a,&b,&c);
qvadr(a,b,c);
system("PAUSE");
return 0;
}
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы для работы с математическими функциями и вводом/выводом данных
- Определяем функцию qvadr, которая принимает три аргумента типа float - a, b и c. Эти переменные соответствуют коэффициентам квадратного уравнения ax^2 + bx + c = 0
- Внутри функции вычисляем дискриминант уравнения по формуле d = b^2 - 4ac
- Используем условный оператор if для проверки значения переменной d. Если d больше нуля, то уравнение имеет два корня и мы вычисляем их значения, используя формулы x1 = (-b + sqrt(d))/(2a) и x2 = (-b - sqrt(d))/(2a). Затем выводим значения корней на экран
- Если d равно нулю, то уравнение имеет один корень и мы выводим его значение, используя формулу x1 = (-b + sqrt(d))/(2a). В этом случае второй корень не вычисляем, так как он равен первому корню
- Если d меньше нуля, то уравнение не имеет действительных корней и мы выводим на экран сообщение
net kornei - В функции main() объявляем три переменные типа float a, b и c и считываем их значения с помощью функции scanf
- Вызываем функцию qvadr, передавая ей значения переменных a, b и c
- Выводим на экран сообщение
Press any key to continue...с помощью функции system(PAUSE) - Возвращаем 0 из функции main(), что означает успешное выполнение программы