Введение
Квадратное уравнение имеет вид ax²+bx+c=0, где a, b и c - константы. В этом лабораторном занятии мы научимся писать программу для нахождения корней квадратного уравнения.
Для решения квадратного уравнения мы будем использовать следующую формулу:
x = (-b ± sqrt(b² - 4ac)) / 2a
Примечание: вам нужно самостоятельно создать файл
~/project/main.cдля практики написания кода и изучения процесса компиляции и запуска программы с использованием gcc.
cd ~/project
## создать main.c
touch main.c
## скомпилировать main.c
gcc main.c -o main
## запустить main
./main
Получить коэффициенты ввода
Мы будем получать от пользователя коэффициенты квадратного уравнения, такие как a, b и c. Эти коэффициенты будут использоваться для вычисления корней квадратного уравнения.
float a, b, c, determinant, r1, r2, real, imag;
printf("\nEnter coefficients a, b and c: ");
scanf("%f%f%f", &a, &b, &c);
Вычислить определитель
Затем мы вычислим значение определителя квадратного уравнения по формуле:
determinant = b*b - 4*a*c;
determinant = b*b - 4*a*c;
Проверить природу корней
Затем мы проверим природу корней квадратного уравнения на основе значения определителя, вычисленного на шаге 2. Если определитель больше 0, то корни действительны и различны. Если определитель равен 0, то корни действительны и равны. Если определитель меньше 0, то корни комплексные и мнимые.
if(determinant > 0) // оба корня действительны
{
r1 = (-b + sqrt(determinant))/2*a; // Скобки важны
r2 = (-b - sqrt(determinant))/2*a;
printf("\n\n\nRoots are: %.2f and %.2f ", r1, r2);
}
else if(determinant == 0) // оба корня действительны и равны
{
r1 = r2 = -b/(2*a); // скобки важны
printf("\n\n\nRoots are: %.2f and %.2f ", r1, r2);
}
/*
Определитель < 0 - оба корня мнимые и имеют
вид действительная часть + i*мнимая часть
*/
else
{
real = -b/(2*a);
imag = sqrt(-determinant)/(2*a);
printf("\n\n\nRoots are %.2f + i%.2f and %.2f - i%.2f ", real, imag, real, imag);
}
Вывести корни
Наконец, мы выведем корни квадратного уравнения в зависимости от природы корней, вычисленных на шаге 3.
Написать полный код
#include<stdio.h>
#include<math.h> // Это нужно для использования функции sqrt()
int main()
{
float a, b, c, determinant, r1, r2, real, imag;
printf("\nВведите коэффициенты a, b и c: ");
scanf("%f%f%f", &a, &b, &c);
determinant = b*b - 4*a*c;
if(determinant > 0) // оба корня действительны
{
r1 = (-b + sqrt(determinant))/2*a; // Скобки важны
r2 = (-b - sqrt(determinant))/2*a;
printf("\n\n\nКорни: %.2f и %.2f ", r1, r2);
}
else if(determinant == 0) // оба корня действительны и равны
{
r1 = r2 = -b/(2*a); // скобки важны
printf("\n\n\nКорни: %.2f и %.2f ", r1, r2);
}
/*
Определитель < 0 - оба корня мнимые и имеют
вид действительная часть + i*мнимая часть
*/
else
{
real = -b/(2*a);
imag = sqrt(-determinant)/(2*a);
printf("\n\n\nКорни: %.2f + i%.2f и %.2f - i%.2f ", real, imag, real, imag);
}
printf("\n\n\n\n\t\t\tПрограммирование весело!\n\n\n");
return 0;
}
Резюме
В этом практическом занятии мы научились писать программу на C для нахождения корней квадратного уравнения. Мы запрашивали у пользователя коэффициенты квадратного уравнения и вычисляли корни на основе природы корней, определяемой значением определителя. Затем мы выводили корни квадратного уравнения в зависимости от природы корней.



