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

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

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

> Нужна помощь
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 25
Пол: Мужской

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


Всё работает но в этом месте

   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 -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 1)
сообщение
Сообщение #2


Гость






Возвращай из 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.

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

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

 





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