Составить подпрограмму решения квадратного уравнения - Turbo Pascal (33562)

Узнай цену своей работы

Формулировка задачи:

Помогите пожалуйста. Составить подпрограмму решения квадратного уравнения ах2 +bx +c = 0.

Решение задачи: «Составить подпрограмму решения квадратного уравнения»

textual
Листинг программы
var
  a, b, c, ds, x1, x2 : real;
 
procedure Solve(var n1, n2 : real);
begin
  n1 := (-b + sqrt(ds)) / (2 * a);
  n2 := (-b - sqrt(ds)) / (2 * a);
end;
 
function D(n1, n2, n3 : real) : real;
begin  
  D := sqr(n2) - 4 * n1 * n3;
end;
 
begin
  repeat
    writeln('введите коэффициенты квадратного уравнения');
    readln(a, b, c);
    if (a = 0) and (b = 0) then
      if (c = 0) then 
      begin
        writeln('уравнение имеет бесконечное количество корней');
        exit      
      end
      else
      begin
        writeln('данное выражение - неверное тождество');
        exit
      end;
  until (a <> 0) or (b <> 0); {проверяем чтобы вообще были неизвестные}
  ds := D(a, b, c);
  if a = 0 then writeln('уравнение не является квадратным, его корень : ', (-c / b):6:2) else
    if ds < 0 then writeln('вещественных корней нет') else
    begin
       Solve(x1, x2);
       if ds = 0 then writeln('корни квадратного уравниеия: ', x1:6:2, ' кратности 2') else
        writeln('корни квадратного уравниеия: ', x1:6:2, x2:6:2)
    end;
  readln
end.

Объяснение кода листинга программы

  1. Объявляются переменные a, b, c, ds, x1, x2 типа real.
  2. Создается процедура Solve, которая принимает два аргумента n1 и n2 типа real.
  3. Внутри процедуры n1 присваивается значение (-b + sqrt(ds)) / (2 a), а n2 присваивается значение (-b - sqrt(ds)) / (2 a).
  4. Создается функция D, которая принимает три аргумента n1, n2 и n3 типа real.
  5. Внутри функции D вычисляется значение D = sqr(n2) - 4 n1 n3.
  6. В основной программе происходит цикл, в котором пользователю предлагается ввести коэффициенты квадратного уравнения.
  7. Проверяется, что все коэффициенты не равны нулю. Если хотя бы один из них равен нулю, то выводится сообщение об этом и программа завершается.
  8. Вычисляется значение D с использованием введенных коэффициентов.
  9. Если a = 0, то выводится сообщение о том, что уравнение не является квадратным, и выводится корень уравнения, если он существует.
  10. Если ds < 0, то выводится сообщение о том, что вещественных корней нет.
  11. Если ds = 0, то выводится сообщение о том, что уравнение имеет корни кратности 2, и выводятся значения x1 и x2.
  12. Программа заканчивается после чтения следующего ввода от пользователя.

Оцени полезность:

7   голосов , оценка 3.714 из 5
Похожие ответы