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

1) массива
2) динамической структуры


program stacktest;
const maxn=100;
type TElem = integer;
TElements = array [1..maxn] of TElem;
TStack = record
Elements:Telements;
Top:integer;
end;
procedure Stack_init (var s:Tstack);
begin
S.top:=0;
end;
function Stack_IsEmpty (s:Tstack):boolean;
begin
Stack_Isempty:=(s.top=0)
end;
Procedure Stack_push (var s:Tstack; E:Telem);
const errorcode = 225;
begin
with s do
if top <maxn
then
begin
top:=top+1;
Elements[top]:=E;
end
Else
begin
Writeln('perepol stek');
Halt (errorcode)
end
end;
function Stack_push_func (var s:Tstack; E:Telem):boolean;
begin
with s do
if top<maxn
then
begin
top:=top+1;
elements[top]:=e;
stack_push_func:=true
end
else
stack_push_func:=false
end;
function Stack_IsEmpty (s:Tstack):Telem;
Const ErrorCode = 255;
begin
if stack_isempty (s)
then
begin
writeln('izvlech el iz steka');
halt (errorCode)
end
else
with s do
begin
stack_pop:=Elements[top];
top:=top-1
end
end;
begin
Cost maxN=100;
Stack_init (stack);
writeln (stack_isempty = stack_isempty(stack));
write('vvedite 1 el ');
readln(e);
stack_push(stack.e);
while not stack_isempty(stack) do
writeln(stack_pop(stack));
writeln('vvedite enter');
readln;
end.



прошу помочь подправить код программы на основе массива
Lapp
Цитата(tatu_cat_69 @ 15.11.2009 18:30) *
прошу помочь подправить код программы на основе массива
Вообще-то неплохо бы было говорить, в чем именно у тебя проблема.
Вот, типо я "подправил".. Уж не знаю, то ли ты имела в виду:)
program stacktest;
const
maxn=100;
type
TElem = integer;
TElements = array [1..maxn] of TElem;
TStack = record
Elements:Telements;
Top:integer;
end;

procedure Stack_init(var s: TStack);
begin
S.top:=0;
end;

function Stack_IsEmpty(s: TStack):boolean;
begin
Stack_Isempty:=(s.top=0)
end;

Procedure Stack_push(var s: TStack; E:TElem);
const
errorcode = 225;
begin
with s do
if top<maxn then begin
top:=top+1;
Elements[top]:=E;
end
Else begin
Writeln('perepol stek');
Halt (errorcode)
end
end;

function Stack_push_func(var s: TStack; E: TElem):boolean;
begin
with s do if top<maxn then begin
top:=top+1;
elements[top]:=e;
stack_push_func:=true
end
else stack_push_func:=false
end;

function Stack_pop(var s:TStack):TElem;
Const
ErrorCode = 255;
begin
if stack_isempty(s) then begin
writeln('izvlech el iz steka');
halt (errorCode)
end
else with s do begin
stack_pop:=Elements[top];
top:=top-1
end
end;

var
Stack: TStack;
e: TElem;

begin
Stack_init (stack);
write('vvedite 1 el ');
readln(e);
stack_push(stack,e);
while not stack_isempty(stack) do writeln(stack_pop(stack));
writeln('vvedite enter');
readln;
end.

Wassago
Интересный ход!Вот например зачем:
type TElem = integer;
?
volvo
Цитата
Вот например зачем:
Например, затем, чтобы в течении секунды поменять тип элементов стека с Integer-а на Double, а не ползать по программе и не искать, где надо поменять, тип, а где - нет. Еще вопросы будут?
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.