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

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

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

> сортировка+список
Rabbit
сообщение 26.05.2007 17:33
Сообщение #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);




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


просто человек
******

Группа: Модераторы
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

Репутация: -  55  +


немножко подправила первую (теперь по крайней мере иногда работает):
PROCEDURE CHANGE (var FIRST : List);
VAR
T, Q: List;
x : INTEGER;
ok: boolean;
BEGIN
q :=first;
while q<>nil do
begin
writeln (q^.info);
q:=q^.next;
end;
writeln ('Vvedite znachenie kluchevogo priznaka');
readln(x);
t:= first;
ok:= true;
if t^.info=x then
begin
first:=first^.next;
t^.next:=t^.next^.next;
first^.next:=t;
end
else
begin
while (t^.next^.next<>nil) and ok do
if t^.next^.info=x then
begin
q:=t;
ok:=false;
end
else
t:=t^.Next;

if ok then
begin
writeln ('neponyatno, shto menyat!' );
readln;
exit;
end;

if q<>nil then
begin
T:=Q^.Next;
Q^.Next:=Q^.NEXT^.Next;
T^.Next:=Q^.Next^.Next;
Q^.next^.next:=T;
end;
end;
writeln ('Operaciya vipolnena! Nagmite ENTER');
readkey;
END;


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Rabbit
сообщение 28.05.2007 13:40
Сообщение #3


Гость






Цитата(мисс_граффити @ 27.05.2007 16:39) *


PROCEDURE CHANGE (var FIRST : List);

writeln ('Vvedite znachenie kluchevogo priznaka');
readln(x);
t:= first;
ok:= true;
if t^.info=x then
begin
first:=first^.next;
t^.next:=t^.next^.next;
first^.next:=t;
end

в верхнем кусочке получается так:
1. первому присваиваешь второй
2, второму присваиваешь третий
3, второму присваивашь первый
зачем вторая строчка??? зачем нам еще следующий следующий??

else
begin
while (t^.next^.next<>nil) and ok do
if t^.next^.info=x then
begin
q:=t;
ok:=false;
end
else
t:=t^.Next;

if q<>nil then
begin
T:=Q^.Next;
Q^.Next:=Q^.NEXT^.Next;
T^.Next:=Q^.Next^.Next;
Q^.next^.next:=T;
end;
end;
END;
и здесь тоже зачем нам следующий следующий???



 К началу страницы 
+ Ответить 

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


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

 



- Текстовая версия 21.07.2025 7:46
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"