Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 25.11.2009, 12:59
boxep boxep вне форума
Прохожий
 
Регистрация: 20.10.2008
Сообщения: 49
Репутация: 10
По умолчанию Не сортируется первый элемент...

Помогите, пожалуйста, разобраться, сделал сортировку методом четных и нечетных транспозиций, всё хорошо сортируется, а первый элемент нет.
Помогите найти ошибку в коде?

Код:
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  
Старый 25.11.2009, 17:19
boxep boxep вне форума
Прохожий
 
Регистрация: 20.10.2008
Сообщения: 49
Репутация: 10
По умолчанию

Никто не знает?
Ответить с цитированием
  #3  
Старый 25.11.2009, 18:59
Аватар для TOJluK
TOJluK TOJluK вне форума
Местный
 
Регистрация: 25.02.2009
Адрес: Минск
Сообщения: 551
Версия Delphi: 2007
Репутация: 110
По умолчанию

Массив начинаеися с нулевого эл-та.
Ответить с цитированием
  #4  
Старый 25.11.2009, 19:16
boxep boxep вне форума
Прохожий
 
Регистрация: 20.10.2008
Сообщения: 49
Репутация: 10
По умолчанию

Цитата:
Сообщение от TOJluK
Массив начинаеися с нулевого эл-та.
Да, это я знаю, только не понимаю что надо сделать?
Я исправил, там неверно написал вывод массива в стрингрид, в этом случае не сортируется первый элемент
Ответить с цитированием
  #5  
Старый 25.11.2009, 19:18
Аватар для TOJluK
TOJluK TOJluK вне форума
Местный
 
Регистрация: 25.02.2009
Адрес: Минск
Сообщения: 551
Версия Delphi: 2007
Репутация: 110
По умолчанию

Так попробуй
Код:
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  
Старый 25.11.2009, 19:21
boxep boxep вне форума
Прохожий
 
Регистрация: 20.10.2008
Сообщения: 49
Репутация: 10
По умолчанию

Цитата:
Сообщение от TOJluK
Так попробуй
Код:
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]));
Да, да я изначально так и писал, просто не внимательно написал код, и исправил его. Не сортируется первый элемент, то есть весь массив сортируется, а первый выводится в стринггрид такой же как в не отсортированном.
Ответить с цитированием
  #7  
Старый 27.11.2009, 20:33
UNAT UNAT вне форума
Прохожий
 
Регистрация: 16.09.2009
Сообщения: 2
Репутация: 10
По умолчанию

я конечно не могу сходу сказать что тут не так, но может быть тебе поможет совет поставить брикпоинт в начале этой процедуры и потом с помощью клавиши F7 и окна со значениями переменных посмотреть что и где делается не так как хотелосьбы. Обычно у меня такие ошибки таким способом находились минут за 5.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 17:20.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025