Показать сообщение отдельно
  #5  
Старый 10.06.2010, 00:23
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,088
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Ну смотри. Тебе надо передвинуть некоторые элементы массива в его конец. Соответсвенно, идем по массиву и если надо передвинуть элемент в конец, то меняем местами значения текущего эдемента и того, который считаем последним.

Код:
// A - массив
// AMin, AMax - интервал
// Функция возвращвет индекс конца массива
function RemoveItems(A : Array Of Integer; AMin, AMax : Integer) : Integer;
var
  I : Integer;
  Buf : Integer;
begin
  I := Low(A);
  Result := High(A);
  While I <= Result Do
    Begin
       If (Abs(A[i]) >= AMin) And (Abs(A[i]) <= AMax) Then
          Begin
             Buf := A[Result];
             A[Result] := A[i];
             A[i] := Buf;
             Dec(Result);
          End;
       Inc(I);
    End;
end;

Использование:
Код:
var
  A : Array [1..100] Of Integer;
  I, Idx : Integer;

procedure PrintArray(A : Array Of Integer; AFrom, ATo : Integer);
var
  I : Integer;
Begin
  For I := AFrom To ATo Do
    Begin
      If I > AFrom Then Write(', ');
      Write(A[i]);
    End;
  WriteLn;
End;

...
begin
  WriteLn('Исходный массив:');
  PrintArray(A,Low(A),High(A));

  Idx := RemoveItems(A,10,20);

  WriteLn('Удаленные элементы:');
  PrintArray(A,Idx+1,High(A));

  WriteLn('Полученный массив:');
  PrintArray(A,Low(A),Idx);
Ответить с цитированием