Определите корни квадратного уравнения . Алгоритм решения этой задачи состоит в вычислении детерминанта. Если D 0, то корни действительные, в противном случае – комплексные.
unit SqRoot_;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, OleCtrls;
type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Button1: TButton;
Label5: TLabel;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
// решает квадратное уравнение
procedure SqRoot(a, b, c: real; var x1, x2: real; var ok: boolean);
{ a, b, c - коэффициенты уравнения
x1, x2 - корни уравнения
ok = True - решение есть
ok = False - решения нет }
var
d: real; // дискриминант
begin
d:= Sqr(b) - 4 * a * c;
if d < 0
then
ok:= False // уравнение не имеет решения
else
begin
ok:= True;
x1:= (-b + Sqrt(d)) / (2 * a);
x2:= (b + Sqrt(d)) / (2 * a);
end;
end;
{$R *. dfm}
procedure TForm1. Button1Click(Sender: TObject);
var
k1, k2: real; // корни уравнения
rez: boolean; // True - решение есть, False - решения нет
mes: string; // сообщение
begin
SqRoot(StrToFloat(Edit1. Text), StrToFloat(Edit2. Text),
StrToFloat(Edit3. Text), k1, k2, rez);
if rez then
mes:= 'Корни уравнения' + #13 +
'x1=' + FloatToStrF(k1, ffGeneral, 4, 2) + #13 +
'x2=' + FloatToStrF(k2, ffGeneral, 4, 2) + #13
else
mes:= 'Уравнение не имеет решения';
label5. Caption:= mes;
end.
|
Результат выполнения программы, описание их назначения.
Эта программа позволяет решать квадратные уравнения и при желании показывает ход решения.