Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
3-1238361532
TheEd
2009-03-30 01:18
2010.08.27
как "вытянуть" описаниея полей в DisplayLabel


2-1268741673
Вася
2010-03-16 15:14
2010.08.27
Destructor


15-1269725156
pleasure
2010-03-28 00:25
2010.08.27
Role-Based Security Rules UI


2-1271934182
Константин
2010-04-22 15:03
2010.08.27
Как удалть объёкты из TObjectList и не уменьшишь при этом ....


2-1268591153
NBAH1990
2010-03-14 21:25
2010.08.27
Программное выделение области мышью





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский