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

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

Форум «Всё о Паскале» _ Задачи _ Немогу найти ошибку

Автор: SkIv 2.12.2006 12:34

Ошибка заключается в том что при сравнении первого и второго элементов, если первый меньше второго, то алгоритм не срабатывает. Вот код. Сортирую методом простой вставки.

Код
procedure vstavka(c:mas);
var k,j,t: integer;
begin
  for i:= 2 to n do
   begin
     k:=1; t:=c[i]; j:=i-1;
     while j>0 do
       begin
         if c[j]<=c[i] then
          begin
            k:=j;
            j:=0;
          end else
           j:=j-1;
        end;
        j:=i;
         while j>k+1 do
          begin
           c[j]:=c[j-1];
           j:=j-1;
          end;
          c[k+1]:=t;
  end;
writeln('vstavka');
vivod(c);
end;

Автор: volvo 2.12.2006 16:54

Оно вообще никогда не будет работать... Вернее, будет, но ты этого не увидишь, потому, что сортироваться будет локальная копия массива... Надо использовать Var-параметр:

procedure vstavka(VAR c: mas);