Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.05.2016, 16:04   #1
Mariya.sw
Новичок
Джуниор
 
Регистрация: 08.05.2016
Сообщений: 1
По умолчанию Паскаль. Динамическая память. Стек. Нужна ваша помащь

Создать стек целочисленных значений, для реализации используя односвязные списки. Реализовать операции добавления (push) и удаления (pop) элемента из стека. Добавьте в стек числа - 5, 3, -4, 5 и распечатайте содержимое стека. Удалите один элемент из стека, добавьте число 10 в стек, и напечатайте содержимое стека еще раз. * Найдите сумму всех положительных элементов, принадлежащих стеку.

Program Stek;
Const n=5;
const zel : array [1 .. n] of integer = (11, 12, 13, 14, 15);
Type pnode=^node;
node=record
d:integer;
s:string;
p : pnode;
end;
Var top : pnode;
d,a,z,x,c,v,i,l,k:integer;
s:string;
option:integer;


{ -------------------------------- добавление в стек ----- }
procedure push( d,z : integer) ;
var p : pnode;
begin
new(p);
p^.d := d;
p^.p := top;
top := p;
end;


{ -------------------------------- выборка из стека ----- }
function print(top : pnode; var d : integer) : pnode;
var p : pnode;
begin
d := top^.d;
print := top^.p;
dispose(top);
end;

{ -------------------------------- удаление из стека ----- }
procedure pop;
var p : pnode;
begin
if top<>nil then begin
p := top^.p;
dispose(top);
top := p
end;
end;

{ ------------------------------- главная программа ----- }
begin
for i:=1 to 5 do begin
while true do begin
writeln ('1-вставка, 2-занесение, 3-удаление, 4-выход');
readln (option);
case option of
1: begin //вставка
writeln ('Введите числa для добавления');
readln(z); readln(x); readln(c); readln(v);

END;
2: BEGIN { занесение в стек }
for a := 1 to n do begin
push(zel[a],d);

while top <> nil do begin
top := print(top, d); end;
writeln(' ',d);
end;
begin
push(z,d);
top := print(top,z);
writeln(' ',z);
push(x,d);
top := print(top,x);
writeln(' ',x);
push(c,d);
top := print(top,c);
writeln(' ',c);
push(v,d);
top := print(top,v);
writeln(' ',v);
end;
end;
3: begin //удаление
pop;

end;
4: exit //выход
end;
end end; end.

Не получается сделать удаление( Помогите пожалуйста!

Последний раз редактировалось Mariya.sw; 08.05.2016 в 16:10.
Mariya.sw вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Указатели, Динамическая память (Паскаль) E1337 Помощь студентам 2 19.03.2016 12:55
Нужна помощь с решением задачи. Динамическая память на паскале Loginnn Паскаль, Turbo Pascal, PascalABC.NET 3 09.12.2015 20:53
Динамическая память в Паскаль (не работает программа и в чём ошибка не могу понять...) milili Помощь студентам 1 10.01.2014 23:31
Pascal (turbo) Динамическая память (список, очередь, стек) Trol_ko Помощь студентам 5 14.09.2011 13:27