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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.10.2009, 20:52   #1
super-leon
Пользователь
 
Аватар для super-leon
 
Регистрация: 30.05.2009
Сообщений: 11
Печаль Пирамидальная Сортировка

Пирамидальная Сортировка где ошибка по чар-емементам?



unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Memo1: TMemo;
Memo2: TMemo;
Label1: TLabel;
Label2: TLabel;
Edit4: TEdit;
Edit1: TEdit;
Label3: TLabel;
Memo3: TMemo;
procedure Button2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button2Click(Sender: TObject);
begin
close;
end;

procedure TForm1.Button1Click(Sender: TObject);


type Tmas= record
w: integer;
s: char;
s1:char;
s2:char; end;


procedure Swap(var a,b:char);
var
tmp: char;
begin
tmp:=a;
a:=b;
b:=tmp;
end;


procedure Sort(var Ns: integer; m: array of Tmas);
var
i, tmp, pos, mid: integer;
begin
mid := Ns div 2;
for i := mid downto 1 do
begin
pos := i;
while pos<=mid do
begin
tmp := pos*2;
if tmp<Ns then
begin
if ord(m[tmp+1].s)<ord(m[tmp].s) then
tmp := tmp+1;
if ord(m[pos].s)>ord(m[tmp].s) then
begin
Swap(m[pos].s, m[tmp].s);
pos:=tmp;
end
else
pos:=Ns;
end
else
if ord(m[pos].s)>ord(m[tmp].s) then
begin
Swap(m[pos].s, m[tmp].s);
pos:=Ns;
end
else
pos:=Ns;
end;
end;
end;



var
a : array [1..4000] of Tmas;
b: array [1..4000] of integer;
Sh:real;
i,j,n,rand: integer; q1,q2: char;

begin Memo1.Clear;
Memo2.Clear;


randomize;

n:=StrToInt(Edit4.Text);
for i:=1 to n do
begin
a[i].w:=random(100);

a[i].s:=chr(59+random(100)) ;
a[i].s1:=chr(59+random(100)) ;
a[i].s2:=chr(59+random(100)) ;
Memo1.Lines.Add(IntToStr(a[i].w));
Memo1.Lines.Add(a[i].s+a[i].s1+a[i].s2);

end;

for i:=n downto 2 do
begin
Sort(i,A);
q1:=a[1].s;
q2:=a[i].s;
Swap(q1,q2);
end;


rand:=random(300);
Edit1.Text:=IntToStr(rand);
for i:=1 to rand do
begin
b[i]:=random(100);
Memo3.Lines.Add(IntToStr(b[i]));
end;

for i:=1 to n do
begin
Memo2.Lines.Add(IntToStr(a[i].w));
Memo2.Lines.Add(a[i].s+a[i].s1+a[i].s2);
end;

end;

end.
super-leon вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сортировка Шелла и Шейкер-сортировка AleksandrMakarov Паскаль, Turbo Pascal, PascalABC.NET 11 11.03.2012 12:18
Сортировка методом линейного выбора и "быстрая" сортировка Карол Помощь студентам 4 27.09.2009 19:52
Сортировка файлов в Explorer vs сортировка в Delphi mutabor Общие вопросы Delphi 11 04.09.2009 14:32
Сорт.дерево и пирамидальная сортировка Санёк20 Паскаль, Turbo Pascal, PascalABC.NET 1 25.02.2008 18:22