Мне нужно с помощью Эдита ввести целочисленный масив, который должен отобразится в мемо1. потом этот масив должен пройти сортировку методом Шелла и отобразится в Мемо2. я новичек и не уверена, что правильно работаю с масивом и считываю его с Эдита как масив, а не как обычный текст. Пожалуйста, исправьте ошибки или укажите на них мне, чтоб я знала, что не так
Код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
const
n=7;
type
TForm1 = class(TForm)
Memo1: TMemo;
Memo2: TMemo;
Label1: TLabel;
Label2: TLabel;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Edit1: TEdit;
procedure Button3Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
type
SEQ=array[1..N] of integer;
procedure Sort;
var
Form1: TForm1;
i:byte;
a:SEQ;
implementation
{$R *.dfm}
procedure TForm1.Button3Click(Sender: TObject);
begin
Form1.Close;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
s:Ansistring;
z:byte;
begin
z:=1;
for i:=1 to n do
s:=s+Edit1.Text[i];
if Edit1.Text[i]=' ' then begin
a[z]:=StrToInt(s);
s:='';
z:=z+1;
end;
Memo1.Lines.Add(Edit1.Text);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Sort;
for i:=1 to n do
Memo1.Lines.Add(inttostr(a[i]));
end;
procedure Sort( var a:seq);
var
d,i,t:integer;
k:boolean;
begin
d:=N div 2;
begin
k:=true;
while k do
begin
k:=false;
i:=1;
for i:=1 to N-d do
begin
if a[i]>a[i+d] then begin
t:=a[i];
a[i]:=a[i+d];
a[i+d]:=t;
k:=true;
end;
d:=d div 2;
end;
end;
end;
end;
end.