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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.09.2010, 21:49   #1
ruslan_k1
Новичок
Джуниор
 
Регистрация: 26.09.2010
Сообщений: 2
По умолчанию проблема со стеком

Подскажите пожалуйста, как можно решить такую задачу. Имется программа для создания стека, необходимо модифицировать ее так, чтобы происходило выталкивание из стека значений пока счетчик не будет на нуле.

program stak;
const size=100;
uv:integer=0;
type Tstak=array[0..size-1] of word;
var stak:Tstak;
p:word;
function push_word(rec:word):boolean;
begin
if uv<size then
begin
stak[uv]:=rec;
inc(uv);
push_word:=true;
end
else
push_word:=false;
end;

function pop_word(var rec:word):boolean;
begin
if uv>0 then
begin
uv:=uv-1;
rec:=stak[uv];
pop_word:=true;
end
else
pop_word:=false;
end;

begin
push_word(5);
pop_word(p);
writeln(p);
readln;
end.
ruslan_k1 вне форума Ответить с цитированием
Старый 26.09.2010, 23:38   #2
savva
Форумчанин
 
Регистрация: 10.06.2010
Сообщений: 225
По умолчанию

у тебя должно быть несколько функций,push и pop задаёшь некий параметр I который называется указателем на вершину стэка.

потом при каждом сохранении в стэк а это функция push увеличиваешь параметр I.Затем когда тебе понадобилось полностью очистить стэк,то есть вывести все данные из стэка ты прописываешь цикл for I downto 0 do pop из стэка.алгоритм должен быть таков как мне кажется.
За помощь: Нажмите на весы слева от сообщения!
savva вне форума Ответить с цитированием
Старый 27.09.2010, 00:03   #3
NiCola999
Не
Участник клуба
 
Регистрация: 29.10.2009
Сообщений: 1,456
По умолчанию

Цитата:
пока счетчик не будет на нуле.
а это что?
Код:
function pop_word(var rec:word):boolean;
begin
     if uv>0 then begin
          uv:=uv-1;
          rec:=stak[uv];
          pop_word:=true;
     end
     else
          pop_word:=false;
end;
NiCola999 вне форума Ответить с цитированием
Старый 27.09.2010, 01:14   #4
savva
Форумчанин
 
Регистрация: 10.06.2010
Сообщений: 225
По умолчанию

тебе в функцию надо передать параметр uv как я понимаю.а в функции push увеличивать его и сделать push процедурой да и pop наверное тоже лучше сделать процедурой.

а цикл такой

while(uv<>0) do
begin
выталкивание
end;

rec:word -а что это?

можно так попробовать

while(uv<>0) do
begin
pop_word(p);
dec(uv);
end;
За помощь: Нажмите на весы слева от сообщения!
savva вне форума Ответить с цитированием
Старый 28.09.2010, 18:57   #5
ruslan_k1
Новичок
Джуниор
 
Регистрация: 26.09.2010
Сообщений: 2
По умолчанию

rec - это запись, заносимая в стек
ruslan_k1 вне форума Ответить с цитированием
Старый 29.09.2010, 10:33   #6
Gambler
Игрок
Форумчанин
 
Аватар для Gambler
 
Регистрация: 29.10.2006
Сообщений: 367
По умолчанию

Код:
procedure ClearStack;
begin
uv:=0;
end;
стек пуст.
Жизнь всегда игра. Но смерть - не всегда поражение.

#define true (Math.random()>0.5) //Удачной отладки
Gambler вне форума Ответить с цитированием
Старый 29.09.2010, 15:18   #7
savva
Форумчанин
 
Регистрация: 10.06.2010
Сообщений: 225
По умолчанию

гамблер,ты ставишь указатель стэка на ноль,но при этом не очищаешь память.
не хорошо с твоей стороны так делать
За помощь: Нажмите на весы слева от сообщения!
savva вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема со стеком в проге на ассемблере T(h)rasher Помощь студентам 23 26.09.2010 17:18
работа со стеком Sparky Паскаль, Turbo Pascal, PascalABC.NET 2 23.09.2010 11:08
Работа со стеком,С++ Singularity Помощь студентам 0 04.05.2010 19:31
работа со стеком xarvenx Общие вопросы C/C++ 1 25.06.2009 13:31
Программа со стеком (С++) Olya90 Помощь студентам 14 30.04.2009 00:03