Главная страница
    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.061 c
15-1269576375
Джони
2010-03-26 07:06
2010.08.27
Командная строка и URL запрос


2-1266218226
Tonick
2010-02-15 10:17
2010.08.27
Сбор данных о характеристиках ПК


2-1272874591
romario
2010-05-03 12:16
2010.08.27
сравнение двух произвольных файлов


2-1269763764
Alex_C
2010-03-28 12:09
2010.08.27
Инициализация глобальных переменных


2-1273505020
HRustBB
2010-05-10 19:23
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский