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

Ты ошибся.
Причем в 2х местах.
1. У тебя должно быть не integer, а как минимум Double для типа элементов массива
2. Сравнение идет по модулю, т.е. абсолютному значению

Должно быть как-то так:
Код:
var
  I, J : Integer;
  tmp : Double;
  A : Array [0..4] Of Double;
begin
  // read and array
  for i:=0 to 4 do
    a[i]:=StrToFloat(StringGrid1.Cells[i,0]);
 
  // "sorting"
  For I := 0 To 4 Do
    If Abs(A[i]) >= 1 Then
        For J := I + 1 To 4 Do
          If Abs(A[J]) < 1 Then
            Begin
               tmp := A[J];
               A[J] := A[i];
               A[i] := tmp;
               Break;
             End;
 
  // Print array
  for i:=0 to 4 do
    StringGrid1.Cells[i,0] := FloatToStr(a[i])
end;
Ответить с цитированием