Форум: "Начинающим";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];
Внизсортировка методом Шелла Найти похожие ветки
← →
Nostalgia © (2010-04-12 14:08) [0]Мне нужно с помощью Эдита ввести целочисленный масив, который должен отобразится в мемо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.
← →
Как-то так (2010-04-12 14:24) [1]
z := 1;
s := "";
for i := 1 to Length(Edit1.Text) do
if Edit1.Text[i] = " " then
if TryStrToInt(s, a[z]) then
begin
Memo1.Lines.Add("a[" + IntToStr(z) + "] = " + s);
s := "";
z := z + 1;
end
else
Memo1.Lines.Add("Errorneous integer: " + s);
else
s := s + Edit1.Text[i];
← →
12 © (2010-04-12 14:25) [2]
> for i:=1 to n do
> s:=s+Edit1.Text[i];
-- цикл закончен, потому ерунда, проще s := Edit1.Text;
if Edit1.Text[i]=" " then begin -- j уже неопределена, т.к. -- цикл закончен
далее лень смотреть
бардак..
← →
Игорь Шевченко © (2010-04-12 14:28) [3]ура, стеки кончились
← →
Как-то так (2010-04-12 14:41) [4]ура, стеки кончились
*С ужасом в голосе* А если не кончились? А если еще одна напасть?
← →
12 © (2010-04-12 14:51) [5]IDs : array of integer;
showmessage("А если ты после последнего числа не поставил зпт и вводишь всякую фигню - это твои проблемы. Поехали, смертнички :)");
sIDs := Edit1.Text;
s:="";
for i := 1 to Length(sIDs) do
begin
if sIDs[i] <> "," then s := s + sIDs[i]
else begin
SetLength(IDs, length(IDs) + 1);
IDs[length(IDs)-1] := StrToInt(s);
s := "";
end;
end;
← →
Jeer © (2010-04-12 15:40) [6]"И все бросились спасать дэвушку, которая даже ничего не пообещала" (С)
← →
Dennis I. Komarov © (2010-04-12 15:48) [7]
> Jeer © (12.04.10 15:40) [6]
И оперы, "как надо задавать вопросы" :)
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.06 c