Загрузка данных


unit Un123213213213it1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls,
  Forms, Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Edit4: TEdit;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    ListBox1: TListBox;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  Close;
end;

procedure TForm1.Button2Click(Sender: TObject);
var
  A, B, C: Double;
  LeftPart: Double;
  X, Y: Integer;
  Found: Boolean;
begin
  ListBox1.Clear;
  Found := False;

  if not TryStrToFloat(Edit2.Text, A) or
     not TryStrToFloat(Edit3.Text, B) or
     not TryStrToFloat(Edit4.Text, C) then
  begin
    ShowMessage('Vvedite korrektnye znacheniya A, B i C.');
    Exit;
  end;

  if (A = 0) and (B = 0) then
  begin
    ShowMessage('A i B odnovremenno ne mogut byt ravny nuly.');
    Exit;
  end;

  for X := -20 to 20 do
    for Y := -20 to 20 do
    begin
      LeftPart := A * X * X + B * Y * Y;

      if Abs(LeftPart - C) < 1E-9 then
      begin
        ListBox1.Items.Add(
          Format(
            'x = %d, y = %d  (%.1f*%d^2 + %.1f*%d^2 = %.1f)',
            [X, Y, A, X, B, Y, C]
          )
        );
        Found := True;
      end;
    end;

  if not Found then
    ListBox1.Items.Add('Resheniy v diapazone -20..20 ne naydeno');
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
  ListBox1.Sorted := True;
end;

end.