Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.04.2010, 14:13   #1
Nostalgia
Пользователь
 
Регистрация: 17.12.2008
Сообщений: 44
По умолчанию Сортировка методом Шелла

Мне нужно с помощью Эдита ввести целочисленный масив, который должен отобразится в мемо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.
Nostalgia вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сортировка Шелла и Шейкер-сортировка AleksandrMakarov Паскаль, Turbo Pascal, PascalABC.NET 11 11.03.2012 12:18
Задача Pascal (Сортировка метод Шелла) madmonk Помощь студентам 2 08.12.2009 17:37
сортировка Шелла pilot76 Помощь студентам 2 17.08.2009 18:05
Помогите решить задачу в C++ на массивы + сортировка методом Шелла Exact Помощь студентам 2 18.06.2009 14:44