
10.06.2010, 00:23
|
Модератор
|
|
Регистрация: 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);
|