Программа
{ Решение биквадратного уравнения }
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.
Бесплатные примеры программ
Примеры написанных программ
Помощь студентам по программированию