Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ сортировка методом шелла.

Автор: Korsar 4.05.2007 23:45

procedure Shellsort;
var i, j, incr: LongInt;
begin
incr := n div 2;
while incr > 0 do begin
for i := incr to n do begin
j := i-incr;
while j>0 do
if a[j] > a[j+incr] then begin
swap(a[j], a[j+incr]);
j:= j-incr
end
else
j := 0;
end;
incr := incr div 2;
end;
end;
Скажите пожалуйста почему после swap(a[j], выдает такую ошибку: error 89: ")" expected?

Автор: volvo 4.05.2007 23:49

Потому, что в модуле System есть функция Swap, которая меняет местами старший/младший байты аргумента... А принимает она одно значение, а не 2... Вот поэтому после первого значения компилятор ждет скобку... Ты должен описать свою процедуру Swap, принимающую 2 параметра...

Автор: Korsar 5.05.2007 0:51

Цитата(volvo @ 4.05.2007 19:49) *

Потому, что в модуле System есть функция Swap, которая меняет местами старший/младший байты аргумента... А принимает она одно значение, а не 2... Вот поэтому после первого значения компилятор ждет скобку... Ты должен описать свою процедуру Swap, принимающую 2 параметра...

А не могли бы вы подсказать как это сделать?

Автор: volvo 5.05.2007 0:56

Procedure Swap(var a, b: integer);
var T: integer;
begin
T := a; a := b; b := T;
end;

{ А дальше - твой ShellSort }
Procedure ShellSort;
...

Автор: Korsar 5.05.2007 0:58

Цитата(volvo @ 4.05.2007 20:56) *

Procedure Swap(var a, b: integer);
var T: integer;
begin
T := a; a := b; b := T;
end;

{ А дальше - твой ShellSort }
Procedure ShellSort;
...


Очень вам благодарен!!!