Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

зависает программа [D7]


Страницы:   1 2

Studentik ©   (2011-05-27 12:54:00) 

Извините народ если  отвлекаю  но не кто не сможет мне  помочь... дело в том  что  у меня при нажатии кнопки на которой  описано событие  программа зависает вот кот  
procedure TForm1.Button2Click(Sender: TObject);
var i,j,k:integer;
   mas:PIntArray;
   masIt:PIntArray;
   chislo:integer;
   kol:integer;
   nItems:integer;
begin
j:=1;
Label1.Caption:='';
kol :=StrToInt(Edit3.Text);
chislo:= StrToInt(edit2.text);
nItems:=(chislo*kol)+NumItems;
GetMem(masIt,nItems*SizeOf(integer));
GetMem(mas,chislo*sizeof(integer));
for i:=chislo downto 1 do
 mas^[i]:=i;
for i:=1 to NumItems-1 do
 begin
   while Items^[i]<=Items[i+1] do
     begin
       Items^[i]:=Items[i+1];
       j:=j+1;
     end;
  end;
if j < NumItems then
 begin
 for i:=0 to chislo-1 do
     masIt[i]:=mas[i];
 for k:=1 to kol-1 do
   begin
   for i:=0 to chislo-1 do
     masIt[i+(chislo*k)]:=mas[i];
   end;
 for i:=0 to NumItems-1 do
   masIt[i+(kol*chislo)]:=Items[i];
 for i:=0 to nItems-1 do
   label1.caption:=label1.caption+IntToStr(masIt[i])+' ';
   end
 else
   label1.caption:='массив упорядочен';

end;


программа проверки упорядоченности числовых элементов динамического массива. Если список неупорядоченный, то заполняю его числами, последовательно уменьшающимися на 1(например 3,2,1), начиная с заданного числа X, и добавить полученный список в начало исходного, повторяя подобную вставку заранее известное число раз.

данные  по Var
i,j,k:integer;
   mas:PIntArray; массивэлементов типа(3,2,1)
   masIt:PIntArray массив итоговый на вывод
   chislo:integer; число с которого идет отсчет
   kol:integer; количество вставок
   nItems:integer; количество элементов  в итоговом списке

Items - это стандартный динамический массив   при его генерировании  на первой кнопке ошибок не возникает

если я где  то намудрил  помогите исправить


Sergey   (2011-06-07 12:50:00) [1]

Результат этого кода.
1. Если Итэмс был (1,2,3,4....Х) он стал (1,3,4,5....а_тут_фиг_знает_что)
2. j=1+NumItems-1


Sergey   (2011-06-07 12:47:00) [2]

Обьясни, что ты хочеш сделать этим?

for i:=1 to NumItems-1 do
begin
  if Items^[i]<=Items[i+1] then
    begin
      Items^[i]:=Items[i+1];
      j:=j+1;
    end;
 end;


oldman   (2011-05-28 10:41:00) [3]


> просто  я не могу  понять  как правильно  перегнать елементы
>  из 2 массивов в один


for...
 a[]:=b[]
for ...
 a[]:=c[]


Ega23   (2011-05-27 15:41:00) [4]

В программе ошибка


Studentik   (2011-05-27 15:38:00) [5]

блин  я зыбыл когда копировал поменять while на if
if  Items^[i]<=Items[i+1] do
   begin
     Items^[i]:=Items[i+1];
     j:=j+1;
   end;
end;
if j < NumItems then
begin
for i:=0 to chislo-1 do
   masIt[i]:=mas[i];
for k:=1 to kol-1 do
 begin
 for i:=0 to chislo-1 do
   masIt[i+(chislo*k)]:=mas[i];
 end;
for i:=0 to NumItems-1 do
 masIt[i+(kol*chislo)]:=Items[i];
for i:=0 to nItems-1 do
 label1.caption:=label1.caption+IntToStr(masIt[i])+' ';


Плохиш   (2011-05-27 15:31:00) [6]

Усё, цикл стал бесконечным...


Ega23   (2011-05-27 15:30:00) [7]


> но ведь ошибка  только в этой части программы  вроде

Ты действительно искренне считаешь, что кто-то будет пристально изучать данный код?


> значит нужно  думать только  на  ней

Тогда зачем спрашиваешь советы? Думай над это частью.


Studentik   (2011-05-27 15:27:00) [8]

но ведь ошибка  только в этой части программы  вроде
while Items^[i]<=Items[i+1] do
    begin
      Items^[i]:=Items[i+1];
      j:=j+1;
    end;
 end;
if j < NumItems then
begin
for i:=0 to chislo-1 do
    masIt[i]:=mas[i];
for k:=1 to kol-1 do
  begin
  for i:=0 to chislo-1 do
    masIt[i+(chislo*k)]:=mas[i];
  end;
for i:=0 to NumItems-1 do
  masIt[i+(kol*chislo)]:=Items[i];
for i:=0 to nItems-1 do
  label1.caption:=label1.caption+IntToStr(masIt[i])+' ';

значит нужно  думать только  на  ней


Ega23   (2011-05-27 15:22:00) [9]


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


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


Studentik   (2011-05-27 15:16:00) [10]

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


Studentik   (2011-05-27 15:16:00) [11]

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


Ega23   (2011-05-27 15:11:00) [12]


> просто  я не могу  понять  как правильно  перегнать елементы
>  из 2 массивов в один


Тогда закупайся пластырем для ног.


Studentik   (2011-05-27 15:05:00) [13]

а тут  действоительно все так  плохо ... может просто  где нить исправить надо  и все заработает  нормально


Studentik   (2011-05-27 14:58:00) [14]

так я так и сделал ... просто  я не могу  понять  как правильно  перегнать елементы  из 2 массивов в один .... я пробовал схалтурить с выводом  типа просто на метке  вывести  подряд два массива ... но препод сказал что должно  быть  все единым массивом


Ega23   (2011-05-27 14:37:00) [15]


> вот скажу честно я бьюсь над этой задаче 2 недели(((  и
> не могу от нее добится того что надо ..код я уже раз 10
>  переписывал


А не надо код переписывать. Возьми бумажку, ручку - и накидай алгоритм. Потом более детально - каждый пункт. И т.д. Проверь, будет работать, или нет.
И только потом садись за комп.
Иначе будешь всё время говнокод, как в [0] получать.


Studentik   (2011-05-27 14:11:00) [16]

вот скажу честно я бьюсь над этой задаче 2 недели(((  и не могу от нее добится того что надо ..код я уже раз 10  переписывал


Anatoly Podgoretsky   (2011-05-27 14:09:00) [17]

> Studentik  (27.05.2011 13:57:20)  [20]

Переписать все нафиг


Studentik   (2011-05-27 14:06:00) [18]

а можешь показать где именно


Ega23   (2011-05-27 13:59:00) [19]


> я не молу понять почему программа не выдает мне того что
> мне нужна а выдает полную чепуху


В ней ошибка.


Studentik   (2011-05-27 13:57:00) [20]

данную  задачу я решил  уже ))) если не трудно помогите я не молу понять почему программа не выдает мне того что мне нужна а выдает полную чепуху


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо