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

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

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

> реализация операций работы со стеком, помогите поправить код
tatu_cat_69
сообщение 15.11.2009 18:30
Сообщение #1





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

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


ну собственно нужно реализовать операции работы со стеком на основе:

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.



прошу помочь подправить код программы на основе массива
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 3)
Lapp
сообщение 16.11.2009 13:17
Сообщение #2


Уникум
*******

Группа: Модераторы
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


Цитата(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.



--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Wassago
сообщение 17.11.2009 0:35
Сообщение #3





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

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


Интересный ход!Вот например зачем:
type TElem = integer;
?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 17.11.2009 0:45
Сообщение #4


Гость






Цитата
Вот например зачем:
Например, затем, чтобы в течении секунды поменять тип элементов стека с Integer-а на Double, а не ползать по программе и не искать, где надо поменять, тип, а где - нет. Еще вопросы будут?
 К началу страницы 
+ Ответить 

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

 

- Текстовая версия 27.07.2025 4:44
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"