Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.01.2013, 02:02   #1
WiZzarD94
Пользователь
 
Регистрация: 13.12.2012
Сообщений: 17
По умолчанию Метод слияния. вываливается программа.

посмотрите.
заранее спасибо.

Код:
procedure TForm1.Button4Click(Sender: TObject);
Var
buf: Integer;
m1:  array of LongInt;
m2:  array of LongInt;
m3:  array of LongInt; { буфер, используемый при обмене элементов массива }
k1,k2,tmp3,k3,z3,l3,a3,b3,n1,n2,n,j:integer;{ буфер, используемый при обмене элементов массива }
time3: Double;
begin
n1:= (n div 2);
n2:=n-(n div 2);
SetLength(m1,n1+1);
SetLength(m2,n2+1);
SetLength(m3,n+1);
a3:=GetCurrentTime();
//  делим масив на два масива
   for i:=1 to n1 do
    begin
      m1[i]:=buf
    end;
  i:= n1+1;
    for k2 := 1 to n2 do
        begin
          m2[k2]:=massiv[i];
          i:=i+1;
{кц}        end;
{нц}   begin
    for i :=1 to n1 do  //сортировка 1 масива методом прямого выбора
     begin
       min:=i;
       for j:=i+1 to n1 do
         if m1[j]<m1[min] then
         min:=j;
         tmp3:=m1[i];
         m1[i]:=m1[min];
         m1[min]:=tmp3;
     end;
    for i :=1 to n1 do //сортировка 2 масива методом прямого выбора
      begin
       min:=i;
       for j:=i+1 to n2 do
         if m2[j]<m2[min] then
         min:=j;
         tmp3:=m2[i];
         m2[i]:=m2[min];
         m2[min]:=tmp3;
{кц}     end;
end;
 {нц}begin     // Сортировка слиянием двух упорядоченых масивов в один
      k3:=1;
      l3:=1;
      z3:=1;
      repeat
        if m1[k3]<m2[l3] then
          begin
            m3[z3]:=m1[k3];
            z3:=z3+1;
            k3:=k3+1;
          end
        else
        if m1[k3]>m2[l3] then
           begin
            m3[z3]:=m2[l3];
            z3:=z3+1;
            l3:=l3+1;
           end
         else
           begin
             m3[z3]:=m1[k3];
             m3[z3+1]:=m2[l3];
             k3:=k3+1;
             l3:=l3+1;
             z3:=z3+2;
           end;
      until (k3>n1)or(l3>n2); {один из двух масивов
                            полностью переписан в массив m3}

     //прицеливание( прикрипление остатка)
      while k3<=n1 do    {есть эл-ты m1, не переписаные в m3}
         begin
           m3[z3]:=m1[k3];
           k3:=k3+1;
           z3:=z3+1;
         end;
      while l3<=n2 do      {есть эл-ты m2, не переписаные в m3}
         begin
           m3[z3]:=m2[l3];
           l3:=l3+1;
           z3:=z3+1;
         end;
b3:=GetCurrentTime();
 if n<5000 then
  for i := 1 to n do
      begin
        StringGrid4.ColCount:=RazmerMassiva+1;
      end
  else
      for i := 1 to 5000 do
      begin
        StringGrid4.ColCount:=RazmerMassiva+1;
      end;
end;
time3:=(b3-a3)/1000;
Edit6.Text:=FloatToStr(time3);
End;
end.


___________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.

Последний раз редактировалось Serge_Bliznykov; 14.01.2013 в 08:40.
WiZzarD94 вне форума Ответить с цитированием
Старый 14.01.2013, 08:34   #2
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,899
По умолчанию

Код надо оформлять кнопочкой #
Подобные проекты требуют нескольких файлов, а не только 1 исходник - обычно ещё dpr и dfm файлы (ещё и pas, если другие модули используете) , плюс, наверное, тестовые данные в таблицу надо набить или из файла какого загрузить, тоже прикладывать. Всё в архив и вложением в расширенной правке/при написании поста прикреплять.
При ошибках надо указывать, ошибка компиляции или времени выполнения - куда указывает дельфи (если указывает) , какую строку кода, какой текст ошибки, при каких условиях такая ошибка проявляется (всю последовательность действий для её вызова, если она времени выполнения).

Вот тогда можно надеяться, что кто-то посмотрит. А пока Вы не поможете (вышеперечисленным) тому, кто изволит помочь - то и помощи-то можете не дождаться.
phomm вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вываливается вкладка Kasper1 Операционные системы общие вопросы 7 18.12.2010 17:19
ПРограмма вываливается с ошибкой. bullvinkle Общие вопросы C/C++ 0 23.03.2010 00:12
вываливается прога R6034 [visual studio 2005 + mico] mannyz Общие вопросы C/C++ 0 28.07.2009 00:08
Метод прямого слияния. Pascal SeRhy Помощь студентам 1 04.03.2009 09:36
Программа для слияния файлов и просчёта суммы Харуми-тян Общие вопросы .NET 9 07.02.2009 17:05