Добавил:
Hist
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Паскаль (I семестр) / K02-172 / 04 / stack_st
.pas program stack_static;
(*
(c) 2005 Dima Zolotukhin aka 'Zlogic' <zlogic@gmail.com>
Redistributable under GNU GPL license
*)
const
MAX_STACK = 10;
type
str_message = string[70];
stack = record
data:array[1..MAX_STACK]of integer;
length:byte;
end;
procedure print_menu;
begin
writeln;
writeln('Њ…Ќћ „€ЌЂЊ€—…‘ЉЋѓЋ ‘’…ЉЂ');
writeln('1 „®Ў ўЁвм н«Ґ¬Ґв');
writeln('2 ‚лв йЁвм н«Ґ¬Ґв');
writeln('3 ‚л室');
end;
function get_int(message:str_message):integer;
var
response:integer;
begin
write(message,'> ');
readln(response);
get_int:=response;
end;
function push(var _stack:stack;data_to_add:integer):boolean;
begin
if _stack.length<MAX_STACK then{Ґб«Ё ¤«Ё б⥪ Ґ ¬ ЄбЁ¬ «м }
begin
_stack.length:=_stack.length+1;{㢥«ЁзЁў Ґ¬ ¤«Ёг}
_stack.data[_stack.length]:=data_to_add;{¤®Ў ў«пҐ¬ н«Ґ¬Ґв ў Є®Ґж}
push:=true;
end
else{Ё зҐ}
push:=false;{®иЁЎЄ }
end;
function pop(var _stack:stack;var data_out:integer):boolean;
begin
if _stack.length>0 then{Ґб«Ё б⥪ ҐЇгбв®©}
begin
data_out:=_stack.data[_stack.length];{Ї®«гз Ґ¬ § 票Ґ}
_stack.length:=_stack.length-1;{㬥ми Ґ¬ ¤«Ёг б⥪ }
pop:=true;
end
else{Ё зҐ}
pop:=false;{®иЁЎЄ }
end;
var
exit:boolean;
response:byte;
_stack:stack;
x:integer;
begin
exit:=false;
_stack.length:=0;
while not exit do{Ї®Є Ґ 㦮 ўл©вЁ}
begin
print_menu;{Ї®Є §лў Ґ¬ ¬Ґо}
response:=get_int('‚лЎҐаЁвҐ ў аЁ в');{зЁв Ґ¬ ®вўҐв Ї®«м§®ў ⥫п}
writeln;
case response of
1:if not push(_stack,get_int('‚ўҐ¤ЁвҐ, зв® ¤®Ў ўЁвм ў б⥪'))then{¤®Ў ў«ҐЁҐ н«Ґ¬Ґв ў б⥪}
writeln('<< ‘’…Љ Џ…ђ…ЏЋ‹Ќ…Ќ >>');
2:begin
if pop(_stack,x) then{Ґб«Ё б⥪ ҐЇгбв®©}
writeln('Џ®«г祮 Ё§ б⥪ : ',x){ўлў®¤Ё¬ н«Ґ¬Ґв}
else{Ё зҐ}
writeln('<< ‘’…Љ Џ“‘’Ћ‰ >>');{ўлў®¤Ё¬ error}
end;
3:exit:=true;{ўл室}
end;
end;
end.
(*
(c) 2005 Dima Zolotukhin aka 'Zlogic' <zlogic@gmail.com>
Redistributable under GNU GPL license
*)
const
MAX_STACK = 10;
type
str_message = string[70];
stack = record
data:array[1..MAX_STACK]of integer;
length:byte;
end;
procedure print_menu;
begin
writeln;
writeln('Њ…Ќћ „€ЌЂЊ€—…‘ЉЋѓЋ ‘’…ЉЂ');
writeln('1 „®Ў ўЁвм н«Ґ¬Ґв');
writeln('2 ‚лв йЁвм н«Ґ¬Ґв');
writeln('3 ‚л室');
end;
function get_int(message:str_message):integer;
var
response:integer;
begin
write(message,'> ');
readln(response);
get_int:=response;
end;
function push(var _stack:stack;data_to_add:integer):boolean;
begin
if _stack.length<MAX_STACK then{Ґб«Ё ¤«Ё б⥪ Ґ ¬ ЄбЁ¬ «м }
begin
_stack.length:=_stack.length+1;{㢥«ЁзЁў Ґ¬ ¤«Ёг}
_stack.data[_stack.length]:=data_to_add;{¤®Ў ў«пҐ¬ н«Ґ¬Ґв ў Є®Ґж}
push:=true;
end
else{Ё зҐ}
push:=false;{®иЁЎЄ }
end;
function pop(var _stack:stack;var data_out:integer):boolean;
begin
if _stack.length>0 then{Ґб«Ё б⥪ ҐЇгбв®©}
begin
data_out:=_stack.data[_stack.length];{Ї®«гз Ґ¬ § 票Ґ}
_stack.length:=_stack.length-1;{㬥ми Ґ¬ ¤«Ёг б⥪ }
pop:=true;
end
else{Ё зҐ}
pop:=false;{®иЁЎЄ }
end;
var
exit:boolean;
response:byte;
_stack:stack;
x:integer;
begin
exit:=false;
_stack.length:=0;
while not exit do{Ї®Є Ґ 㦮 ўл©вЁ}
begin
print_menu;{Ї®Є §лў Ґ¬ ¬Ґо}
response:=get_int('‚лЎҐаЁвҐ ў аЁ в');{зЁв Ґ¬ ®вўҐв Ї®«м§®ў ⥫п}
writeln;
case response of
1:if not push(_stack,get_int('‚ўҐ¤ЁвҐ, зв® ¤®Ў ўЁвм ў б⥪'))then{¤®Ў ў«ҐЁҐ н«Ґ¬Ґв ў б⥪}
writeln('<< ‘’…Љ Џ…ђ…ЏЋ‹Ќ…Ќ >>');
2:begin
if pop(_stack,x) then{Ґб«Ё б⥪ ҐЇгбв®©}
writeln('Џ®«г祮 Ё§ б⥪ : ',x){ўлў®¤Ё¬ н«Ґ¬Ґв}
else{Ё зҐ}
writeln('<< ‘’…Љ Џ“‘’Ћ‰ >>');{ўлў®¤Ё¬ error}
end;
3:exit:=true;{ўл室}
end;
end;
end.
Соседние файлы в папке 04