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

Тебе надо именно только в StringGrid'e, или можно в них вывести только результат? Если можно обойтись результатом, то можно так:

Код:
procedure SortArray(var A : Array Of Integer);
var
  I, J : Integer;
  Buf : Integer;
begin
  For I := Low(A) To High(A)-1 Do
    For J := I +1 To High(A) Do
      If A[i] > A[J] Then
        Begin
          Buf := A[i];
          A[i] := A[J];
          A[J] := Buf;
        end;
end;

procedure FillGrid(AGrid : TStringGrid; A : Array Of Integer);
var
  I : Integer;
begin
  AGrid.RowCount := Length(A);
  For I := 0 To AGrid.RowCount-1 Do
    AGrid.Cells[0,I] := IntToStr(A[i]);
end;

procedure ProcessNumbers(AGrid1, AGrid2 : TStringGrid);
var
  I, N : Integer;
  A, B : Array Of Integer;
begin
  SetLength(A,0);
  SetLength(B,0);
  For I := 0 To AGrid1.RowCount-1 Do
    Begin
      N := StrToInt(AGrid1.Cells[0,I]);
      If (N Mod 2) = 0
        Then
          Begin
            SetLength(A,Length(A)+1);
            A[High(A)] := N;
          End
        Else
          Begin
            SetLength(B,Length(B)+1);
            B[High(B)] := N;
          End;
    End;

  SortArray(A);
  SortArray(B);

  FillGrid(AGrid1,A);
  FillGrid(AGrid2,B);
end;
Ответить с цитированием