Программа


{ Решение биквадратного уравнения }
VAR A,B,C:real;  { Коэффициенты }
    X1,X2,X3,X4:real; { Корни }
    Flag1,Flag2:boolean; { Флаги наличия корней }
PROCEDURE GetRoot(A,B,C:real;var X1,X2,X3,X4:real;var Flag1,Flag2:boolean);
                                               { Процедура вычисления корней }
  Var D:real; { Дискриминант }
      Y1,Y2:real; { Промежуточные корни квадратного уравнения }
  Begin
    D:=Sqr(B)-4*A*C;  { Вычисление дискриминанта }
    Flag1:=D>=0;      { Первичное определение наличия первой пары корней }
    Flag2:=D>=0;      { Первичное определение наличия второй пары корней }
    if D>=0 then begin { Вычисление корней при неотрицательном дискриминанте }
                   D:=Sqrt(D); { Вычисление корня дискриминанта }
                   Y1:=(-B-D)/(2*A);
                            { Вычисление первого корня квадратного уравнения}
                   Y2:=(-B+D)/(2*A);
                            { Вычисление второго корня квадратного уравнения}
                   Flag1:=Y1>=0; { Определение наличия первой пары корней }
                   Flag2:=Y2>=0; { Определение наличия второй пары корней }
                   if Flag1 then begin { Вычисление первой пары корней }
                                   X1:=Sqrt(Y1);
                                   X2:=-X1
                                 end;
                   if Flag2 then begin { Вычисление второй пары корней }
                                   X3:=Sqrt(Y2);
                                   X4:=-X3
                                 end
                 end
  End;
BEGIN
  WriteLn;  { Пропуск строки }
  Write('Введите A '); { Вывод приглашения ввести коэффициент A }
  ReadLn(A);           { Ввод A }
  Write('Введите B '); { Вывод приглашения ввести коэффициент B }
  ReadLn(B);           { Ввод B }
  Write('Введите C '); { Вывод приглашения ввести коэффициент C }
  ReadLn(C);           { Ввод C }
  WriteLn;  { Пропуск строки }
  GetRoot(A,B,C,X1,X2,X3,X4,Flag1,Flag2); { Вычисление корней }
  if Flag1 then WriteLn('X1=',X1,'   X2=',X2);
                                      { Вывод первой пары корней при наличии }
  if Flag2 then WriteLn('X3=',X3,'   X4=',X4);
                                      { Вывод второй пары корней при наличии }
  if not Flag1 and not Flag2 then WriteLn('Корней нет')
                                     { Вывод сообщения при отсутствии корней }
END.

Бесплатные примеры программ
Примеры написанных программ
Помощь студентам по программированию