Нахождение корней квадратного уравнения

CBeginner
Практиковаться сейчас

Введение

Квадратное уравнение имеет вид 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 для нахождения корней квадратного уравнения. Мы запрашивали у пользователя коэффициенты квадратного уравнения и вычисляли корни на основе природы корней, определяемой значением определителя. Затем мы выводили корни квадратного уравнения в зависимости от природы корней.