IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> сортировка+список
сообщение
Сообщение #1


Гость






надо отсортировать список по ключевому признаку, у меня все сортируется но обратно не записывается в список! подскажите где ошибка!
Может чтото с параметрами??


PROCEDURE SORT ( FIRST : EL);
TYPE
MAS1=ARRAY[1..100] OF INTEGER;
TMAS1=^MAS1;
MAS2=ARRAY[1..100] OF STRING;
TMAS2=^MAS2;
VAR
Z1:TMAS1;
Z2: TMAS2;
K,C,i,j: INTEGER;
D: STRING;
BEGIN
Q:=FIRST;
K:=0;
WHILE Q<> NIL DO
BEGIN
INC(K);
Z1^[K]:=Q^.INF1;
Z2^[K]:=Q^.INF2;
q:=q^.next;
END;

FOR J:=1 TO K-1 DO
FOR I:=1 TO K-J DO
IF Z1^[I]>Z1^[I+1]
THEN BEGIN
C:=Z1^[I];
Z1^[I]:=Z1^[I+1];
Z1^[I+1]:=C;
D:=Z2^[I];
Z2^[I]:=Z2^[I+1];
Z2^[I+1]:=D;
END;
{запись обратно в список}
q:=nil;
FIRST:=NIL;
FOR I:=1 TO K DO
BEGIN
new(p);
if first=nil then first:=p;
p^.inf1:=Z1^[i];
p^.inf2:=Z2^[i];
if q<>nil then q^.next:=p;
q:=p;
end;
p^.next:=nil;

writeln ('Operaciya vipolnena! Nagmite ENTER');
readkey;
END;

{ВЫЗОВ}
sort(first);




помогите пожалуйста!
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Гость






Если бы ты во-первых сделал так:
PROCEDURE SORT ( Var FIRST : EL);
, а во-вторых выделал бы память для массивов, в которых собираешься сортировать данные:

...
BEGIN
New(Z1); New(Z2); { <--- Не забывай это возвращать потом }
Q:=FIRST;
...

, то все бы работало...

Но утечка памяти все же есть: ты читаешь данные из первоначального списка, не удаляя их из памяти, а потом зачем-то организуешь новый список, т.е., расход памяти увеличивается вдвое... А удалишь ты в конце работы программы - только новый список (если вообще удалишь)...
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 8.05.2024 4:23
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name