Помощь - Поиск - Пользователи - Календарь
Полная версия: Односвязный список
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Rocket
В данной программе у меня не корректно работает удаление,а именно:не удаляется последний добавленный элемент. В чём причина?
мисс_граффити
blink.gif какое интересное форматирование... а-ля Маяковский.
сделай, пожалуйста, нормальное. структура программы плохо просматривается.
Renbo
кстати, если не вглядываться - то довольно забавно выглядит lol.gif
а если попытаться понять - что там написано - можно голову сломать )

Кстати у тебя красота лесенкой токо в начале, ты бы и в конце бы тоже так сделал, а то конец - всё красоту рушит )))
Rocket
Ребятушки,Программистушки! Я попросил найти ошибку в коде,а не обсуждать его вид. Код не настолько здоровый,чтобы не разобраться,что к чему относится. Так что жду ответов по теме yes2.gif
volvo
Цитата
Я попросил найти ошибку в коде,а не обсуждать его вид.
А то, что первое неотделимо от второго, ты не подумал? Почему, например, ты сам не можешь найти ошибку в коде, а хочешь, чтобы это сделали ЗА тебя? Не потому ли, что не можешь разобраться в этой лесенке?
мисс_граффити
Не знаю, как у тебя, а у меня необходимость по несколько минут соображать, где заканчивается блок, желание искать ошибки отбивает.
Тем более что в 80% случаев ошибка кроется именно в неправильных границах блока.
Rocket
НУ вот,попытался адаптировать свой код. Так что жду помощи. rolleyes.gif
мисс_граффити
Как я и говорила, проблема с границами блока в ToDelete
Если ты сделаешь нормальное форматирование этой подпрограммы, сам увидишь, где не хватает операторных скобок begin/end.
Rocket
Цитата(мисс_граффити @ 6.05.2007 14:54) *

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

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
мисс_граффити
Цитата
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 20:02) *

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

Да,да...очень глупая ошибочка вышла... Большое,пребольшое спасибо! smile.gif
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.