Top.Mail.Ru
Ответы

Как сортировать чтобы элементы выводились по возрастанию? (Паскаль)

for i:=25 to 36 do
begin
if i mod 3 = 0 then // каждое третье число
begin
D[i] := 1/ D[i] ; // находит обратные значения
write (D[i]:10:2);
end;
end;

если что условия задачи: Упорядочить каждые третьи элементы последней трети массива по возрастанию обратных значений

По дате
По Рейтингу
Аватар пользователя
Искусственный Интеллект

Ни к чему для этого находить обратные значения. Достаточно просто упорядочить по уменьшению значений. А упорядочение - смотри сортировку пузырьком.

Аватар пользователя
12345678910111213141516171819202122232425262728293031
 type 
  TFloatArray = array of real; 
 
var 
  D: TFloatArray; 
  i, j, len, ind, cnt, left, right: integer; 
  tmp: real; 
 
begin 
  Randomize; 
  len := (Random(8) + 3) * 9; 
  ind := len div 3 * 2 + 2; 
  cnt := len div 9; 
  SetLength(D, len); 
  for i := 0 to cnt - 1 do D[i * 3 + ind] := Random * 100; 
 
  for i := 1 to cnt - 1 do 
    for j := i - 1 downto 0 do 
    begin 
      left := j * 3 + ind; 
      right := (j + 1) * 3 + ind; 
      if D[left] < D[right] then // 1 / D[left] > 1 / D[right] 
      begin 
        tmp := D[right]; 
        D[right] := D[left]; 
        D[left] := tmp; 
      end else break; 
    end; 
 
  for i := 0 to cnt - 1 do writeln(D[i * 3 + ind]:5:2); 
end.