Переупорядочить массив в паскале по убыванию - PullRequest
0 голосов
/ 24 ноября 2011

не могу найти похожие посты, поэтому отправляю свой вопрос. Я получил переменную массив вещественных:

price = array([58.9],[38.7],[8.95],[28.3])

Мне нужно упорядочить по убыванию, с моим кодом все работает хорошо до последнего значения массива, я знаю даже почему, но не могу найти решение самостоятельно. В любом случае вот код:

    Procedure orderarray;
Var i,dz, j: Integer;
  c  :real;
  v  :string[25];

Begin
dz := 1;
 For i := 1 to 3 do
  Begin
   For j:=i+1 to 4 do
    if price[j]>price[dz] //searches for highest value in the array
       then dz:=j;
   c:=price[i]; price[i] := price[dz]; price[dz] := c; //switches current value with highest
  End;

Ответы [ 3 ]

1 голос
/ 04 декабря 2011

Я нашел решение своей проблемы.Размещать на всякий случай, если это кому-нибудь понадобится.Мне нужно было сбросить dz на i, а не на j

    Procedure orderarray;
Var i,dz, j: Integer;
  c  :real;
  v  :string[25];

Begin
 For i := 1 to 3 do
  Begin
dz:=i;
   For j:=i+1 to 4 do
    if price[j]>price[dz] //searches for highest value in the array
       then dz:=j;
   c:=price[i]; price[i] := price[dz]; price[dz] := c; //switches current value with highest
  End;

Спасибо всем за вашу помощь, в любом случае, вы бы не нашли решение без вас.

0 голосов
/ 24 ноября 2011

В вашем примере dz всегда будет равен 1, последний элемент никогда не будет перемещен, так как он меньше первого.

0 голосов
/ 24 ноября 2011

вам нужно каждый раз сбрасывать dz на j

for j:=i+1 to 4 do
begin
   dz := j;
   if price[j]>price[dz]
      ...;
   c:=price[i]; ...;
end
...