Помощь - Поиск - Пользователи - Календарь
Полная версия: Нужна помощь
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Dunkel_L
Всё работает но в этом месте

   begin

l:=top^.link;
Pop:=top^.info;
dispose (top);
top:=l;
end
else begin
Writeln(' !ЋиЁЎЄ :‘внЄ Їгбв');
Pop:=0;
end;
end;


нужно убрать страку в выводе
"0 удалено из стека"

Ниже приведён код програмы

program laba2;
Uses CRT;
type ptr=^node;
node=record
info:integer;
link:ptr;
end;
var
top,q,r:ptr;
a,b,c:word;
procedure Push(n:integer);
var
p:ptr;
begin
new(p);
p^.info:=n;
p^.link:=top;
top:=p;
end;
function Pop:integer;
var
l:ptr;
begin
if top <> nil then



begin

l:=top^.link;
Pop:=top^.info;
dispose (top);
top:=l;
end
else begin
Writeln(' !ЋиЁЎЄ :‘внЄ Їгбв');
Pop:=0;
end;
end;



procedure menu;
begin
write(' ‚ўҐ¤ЁвҐ Є®¬ ­¤г Ё ­ ¦¬ЁвҐ ‚‚Ћ„: ');
read(a);

if a=1 then
begin
write(' ‚ўҐ¤ЁвҐ зЁб«®: ');
readln(B);
Push(B);
menu;
end
else
if a=2 then
begin
Writeln;
Write(pop);
writeln(' г¤ «Ґ­® Ё§ б⥪ ');
readln;

menu;
end
else
if a=3 then
begin
Write(' ‘внЄ:');
q:=top;
while q<>nil do
begin
write(q^.info,' ');
q:=q^.link;
end;
Writeln;
menu;
end
else
if a=4 then
begin
while top<>nil do
begin
r:=top^.link;
dispose(top);
top:=r;
end;
end
else
if a>=5 then
Begin
Writeln;
Writeln(' ‚ў®¤ ­Ґ Є®аҐЄвҐ­ ');
Writeln(' ‚ўҐ¤ЁвҐ Є®¬ ­¤г Ґйс а § (®в 1 ¤® 4)');
Writeln;
menu;
end;
end;
begin
clrscr;
writeln(' 1-‚ў®¤ зЁб« б⥪ ');
writeln(' 2-“¤ «Ґ­ЁҐ зЁб« Ё§ б⥪ ');
writeln(' 3-‚лў®¤ б⥪ ­ нЄа ­');
writeln(' 4-‚л室 Ё§ Їа®Ја ¬¬л');
menu;
end.


Вообще-то смайлики нужно отключать, да и тегами [ code ] пользоваться не мешало бы...

Кстати, название темы исправь...
volvo
Возвращай из Pop признак ошибки:
function Pop(var error: boolean):integer;
var l:ptr;
begin
error := (top = nil);
if not error then begin
l:=top^.link;
Pop:=top^.info;
dispose (top);
top:=l;
end
else begin
Writeln(' !ЋиЁЎЄ :‘внЄ Їгбв');
Pop:=0;
end;
end;


procedure menu;
var
error: boolean;
X: integer;
begin
...
if a=2 then begin
Writeln;
X := pop(error);
if not error then
writeln(X, ' г¤ «Ґ­® Ё§ б⥪ ')
readln;
menu;
end
...
end;

Кстати,
Цитата
Всё работает
- это до поры до времени... У тебя же в menu постоянная рекурсия, и эта процедура никогда не заканчивается. Так что если будешь несколько десятков значений добавлять/удалять, обязательно нарвешься на Stack Overflow.

Как можно исправить программу, чтобы этого не возникало - ищи по форуму, я уже давал подобное решение...
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.