![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
зависает программа [D7]
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]данную задачу я решил уже ))) если не трудно помогите я не молу понять почему программа не выдает мне того что мне нужна а выдает полную чепуху