Решить квадратное уравнение

Задача

Найти корни квадратного уравнения и вывести их на экран, если они есть. Если корней нет, то вывести сообщение об этом. Конкретное квадратное уравнение определяется коэффициентами a, b, c, которые вводит пользователь.

Пояснение к задаче и алгоритм решения

Квадратное уравнение имеет вид ax2 + bx + c = 0. Коэффициенты a, b и c - это конкретные числа, а x надо найти, решив уравнение.

  1. Вычислить дискриминант по формуле d = b2 - 4ac.
  2. Если дискриминант больше нуля, то вычислить два корня уравнения:
    x1 = (-b+√d) / 2a
    x2 = (-b-√d) / 2a
  3. Если дискриминант равен нулю, то вычислить только один корень (второй будет равен ему).
  4. Если дискриминант отрицателен, то вывести сообщение, что корней нет.

Исходный код на языке программирования Pascal

var
    a,b,c,d,x1,x2: real;
begin
    write('a='); readln(a);
    write('b='); readln(b);
    write('c='); readln(c);
    d := b*b - 4*a*c;
    if d > 0 then begin
        x1 := (-b + sqrt(d)) / (2*a);
        x2 := (-b - sqrt(d)) / (2*a);
        writeln('x1=',x1:3:2,'; x2=',x2:3:2);
    end
    else
        if d = 0 then begin
            x1 := (-b) / (2*a);
            writeln('x=',x1:5:2);
        end
        else
            writeln('Корней нет');
end.

Пример(ы) выполнения программы на языке Pascal

a=7
b=1
c=-6
x1=0.86; x2=-1.00

Исходный код на языке программирования C

#include <stdio.h>
#include <math.h>
 
main() {
    float a,b,c,d,x1,x2;
    printf("a="); scanf("%f",&a);
    printf("b="); scanf("%f",&b);
    printf("c="); scanf("%f",&c);
    d = b*b - 4*a*c;
    if (d>0) {
        x1 = (-b + sqrt(d)) / (2*a);
        x2 = (-b - sqrt(d)) / (2*a);
        printf("x1=%.2f; x2=%.2f", x1, x2);
    }
    else
        if (d = 0) {
            x1 = -b / (2*a);
            printf("x1=%.2f; x2=%.2f", x1, x2);
        }
        else printf("Корней нет.");
    printf("\n");
}

Пример(ы) выполнения программы на языке C

a=-20
b=8
c=1.5
x1=-0.14; x2=0.54

Особенности решения на языке программирования C

Ключ -lm при компиляции gcc.

Исходный код на языке программирования Python

print("Введите коэффициенты для квадратного уравнения (ax^2 + bx + c = 0):")
a = float(input("a = "))
b = float(input("b = "))
c = float(input("c = "))
 
discr = b**2 - 4 * a * c;
print("Дискриминант D = %.2f" % discr)
if discr > 0:
        import math
        x1 = (-b + math.sqrt(discr)) / (2 * a)
        x2 = (-b - math.sqrt(discr)) / (2 * a)
        print("x1 = %.2f \nx2 = %.2f" % (x1, x2))
elif discr == 0:
        x = -b / (2 * a)
        print("x = %.2f" % x)
else:
        print("Корней нет")

Исходный код на языке программирования КуМир

алг квадратное уравнение
нач
  вещ a, b, c, D, x1, x2
  ввод a
  ввод b
  ввод c
  D := b**2 - 4*a*c
  вывод "D = ", D, нс
  если D > 0 то
    x1 := (-b + sqrt(D)) / (2 * a)
    x2 := (-b - sqrt(D)) / (2 * a)
    вывод "x1 = ", x1, нс
    вывод "x2 = ", x2, нс
   иначе
    если D = 0 то
      x1 := -b / (2 * a)
      вывод "x = ", x1, нс
     иначе
      вывод "корней нет", нс
    все
  все
кон

Исходный код на языке программирования Basic

input "a = ", a
input "b = ", b
input "c = ", c
d = b^2 - 4*a*c
 
decimal 3
 
if d > 0 then
        x1 = (-b + sqrt(d)) / (2*a)
        x2 = (-b - sqrt(d)) / (2*a)
        print "x1 = " + x1 + ", x2 = " + x2
else
        if d = 0 then
                x = -b  / (2*a)
                print "x = " + x
        else
                print "Корней нет"
        endif
endif

Особенности решения на языке программирования Basic

Команда decimal указывает сколько знаков после запятой следует выводить.

Тема

Ветвления

Уровень сложности

Средний

Дата публикации