![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Помогите, пожалуйста, разобраться, сделал сортировку методом четных и нечетных транспозиций, всё хорошо сортируется, а первый элемент нет.
Помогите найти ошибку в коде? Код:
procedure TForm1.Button2Click(Sender: TObject); var i,r,j,k:word; flag:boolean; begin Form1.ListBox2.Clear; SetLength(B,N); repeat for j:=1 to 2 do begin flag:=false; i:=j; while i<n do begin if B[i]>B[i+1] then begin r:=B[i+1]; B[i+1]:=B[i]; B[i]:=r; flag:=true; end; i:=i+2 end; end; until flag=false; for i:=0 to n-1 do Form1.ListBox2.Items.Add(IntToStr(B[i])); Последний раз редактировалось boxep, 25.11.2009 в 19:16. |
#2
|
|||
|
|||
![]() Никто не знает?
|
#3
|
||||
|
||||
![]() Массив начинаеися с нулевого эл-та.
|
#4
|
|||
|
|||
![]() Цитата:
Я исправил, там неверно написал вывод массива в стрингрид, в этом случае не сортируется первый элемент |
#5
|
||||
|
||||
![]() Так попробуй
Код:
procedure TForm1.Button2Click(Sender: TObject); var i,r,j,k:word; flag:boolean; begin Form1.ListBox2.Clear; SetLength(B,N); repeat for j:=0 to 1 do begin flag:=false; i:=j; while i<n-1 do begin if B[i]>B[i+1] then begin r:=B[i+1]; B[i+1]:=B[i]; B[i]:=r; flag:=true; end; i:=i+2 end; end; until flag=false; for i:=0 to n-1 do Form1.ListBox2.Items.Add(IntToStr(B[i])); |
#6
|
|||
|
|||
![]() Цитата:
|
#7
|
|||
|
|||
![]() я конечно не могу сходу сказать что тут не так, но может быть тебе поможет совет поставить брикпоинт в начале этой процедуры и потом с помощью клавиши F7 и окна со значениями переменных посмотреть что и где делается не так как хотелосьбы. Обычно у меня такие ошибки таким способом находились минут за 5.
|