Тема: Массив
Показать сообщение отдельно
  #4  
Старый 02.07.2016, 19:03
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,096
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Не проверял, так что могут быть мелкие баги:
Код:
var
  A : Array Of Integer;
  B : Array Of Integer;
  N, Z : Integer;
  I : Integer;
  F : Boolean;
begin
  // init source array
  N := 100;
  SetLength(A,N);
  For I := Low(A) To High(A) Do A[i] := Random(200) - 100;

  // Definw seach condition
  F := False;
  For I := Low(A) To High(A)-1 Do
  Begin
    F := ((A[I+1] mod 2) = 0) And ((A[i] mod 2) = 1);
    If F Then Break;
  End;

  // Copy
  SetLength(B,0);
  For I := Low(A) To High(A) Do
    If F 
      Then
         Begin
            If A[i] >= 0 then
              Begin
                SetLength(B, Length(B)+1);
                B[High(B)] := A[i];
              End
         End
      Else
         Begin
            If A[i] < 0 then
              Begin
                SetLength(B, Length(B)+1);
                B[High(B)] := A[i];
              End
         End
  End;

  // Reverse array B
  For I := Low(B) To (High(B) div 2) Do
    begin
       Z := B[i];
       B[i] := B[High(B)-I]
       B[High(B)-I] := Z;
    end;
end;
Ответить с цитированием