Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Односвязный список

Автор: Rocket 4.05.2007 22:16

В данной программе у меня не корректно работает удаление,а именно:не удаляется последний добавленный элемент. В чём причина?


Прикрепленные файлы
Прикрепленный файл  Список.pas ( 5.32 килобайт ) Кол-во скачиваний: 177

Автор: мисс_граффити 4.05.2007 23:16

blink.gif какое интересное форматирование... а-ля Маяковский.
сделай, пожалуйста, нормальное. структура программы плохо просматривается.

Автор: Renbo 4.05.2007 23:33

кстати, если не вглядываться - то довольно забавно выглядит lol.gif
а если попытаться понять - что там написано - можно голову сломать )

Кстати у тебя красота лесенкой токо в начале, ты бы и в конце бы тоже так сделал, а то конец - всё красоту рушит )))

Автор: Rocket 5.05.2007 0:25

Ребятушки,Программистушки! Я попросил найти ошибку в коде,а не обсуждать его вид. Код не настолько здоровый,чтобы не разобраться,что к чему относится. Так что жду ответов по теме yes2.gif

Автор: volvo 5.05.2007 1:53

Цитата
Я попросил найти ошибку в коде,а не обсуждать его вид.
А то, что первое неотделимо от второго, ты не подумал? Почему, например, ты сам не можешь найти ошибку в коде, а хочешь, чтобы это сделали ЗА тебя? Не потому ли, что не можешь разобраться в этой лесенке?

Автор: мисс_граффити 5.05.2007 4:11

Не знаю, как у тебя, а у меня необходимость по несколько минут соображать, где заканчивается блок, желание искать ошибки отбивает.
Тем более что в 80% случаев ошибка кроется именно в неправильных границах блока.

Автор: Rocket 6.05.2007 15:16

НУ вот,попытался адаптировать свой код. Так что жду помощи. rolleyes.gif


Прикрепленные файлы
Прикрепленный файл  Список.pas ( 5.24 килобайт ) Кол-во скачиваний: 144

Автор: мисс_граффити 6.05.2007 17:54

Как я и говорила, проблема с границами блока в ToDelete
Если ты сделаешь нормальное форматирование этой подпрограммы, сам увидишь, где не хватает операторных скобок begin/end.

Автор: Rocket 7.05.2007 18:23

Цитата(мисс_граффити @ 6.05.2007 14:54) *

Как я и говорила, проблема с границами блока в ToDelete
Если ты сделаешь нормальное форматирование этой подпрограммы, сам увидишь, где не хватает операторных скобок begin/end.
Спасибо! give_rose.gif Начинаю поиск!

Автор: Rocket 7.05.2007 19:07

Вот этот фрагмент:


procedure ToDelete(var first:list; x:integer);
var
temp:list;
extra:list;
found:boolean;

begin
found:=false;
if first<>nil then
if first^.info=x then

begin
found:=true;
temp:=first;
first:=first^.next;
dispose(temp)
end

else
extra:=first;
while not found and (extra^.next<>nil) do
if extra^.next^.info=x then found:=true
else extra:=extra^.next;
if found then
begin
temp:=extra^.next;
extra^.next:=temp^.next;
dispose(temp);
end;
end;

Не могу понять,где не хватает операторных скобок...вроде всё на месте...хотя... unsure.gif

Автор: мисс_граффити 7.05.2007 23:02

Цитата
procedure ToDelete(var first:list; x:integer);
var
temp:list;
extra:list;
found:boolean;

begin
found:=false;
if first<>nil then
if first^.info=x then

begin
found:=true;
temp:=first;
first:=first^.next;
dispose(temp)
end


else
extra:=first;
while not found and (extra^.next<>nil) do
if extra^.next^.info=x then found:=true
else extra:=extra^.next;
if found then
begin
temp:=extra^.next;
extra^.next:=temp^.next;
dispose(temp);
end;

end;

выделила красным выполняемые в проблемном случае действия.
теперь видишь?
(сорри, что не в тегах code)
extra неизвестно чему равно в данном случае, а ты пытаешься с ней работать

Автор: Rocket 7.05.2007 23:41

Цитата(мисс_граффити @ 7.05.2007 20:02) *

выделила красным выполняемые в проблемном случае действия.
теперь видишь?
(сорри, что не в тегах code)
extra неизвестно чему равно в данном случае, а ты пытаешься с ней работать

Да,да...очень глупая ошибочка вышла... Большое,пребольшое спасибо! smile.gif