|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
26.09.2010, 21:49 | #1 |
Новичок
Джуниор
Регистрация: 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. |
26.09.2010, 23:38 | #2 |
Форумчанин
Регистрация: 10.06.2010
Сообщений: 225
|
у тебя должно быть несколько функций,push и pop задаёшь некий параметр I который называется указателем на вершину стэка.
потом при каждом сохранении в стэк а это функция push увеличиваешь параметр I.Затем когда тебе понадобилось полностью очистить стэк,то есть вывести все данные из стэка ты прописываешь цикл for I downto 0 do pop из стэка.алгоритм должен быть таков как мне кажется.
За помощь: Нажмите на весы слева от сообщения!
|
27.09.2010, 00:03 | #3 | |
Не
Участник клуба
Регистрация: 29.10.2009
Сообщений: 1,456
|
Цитата:
Код:
|
|
27.09.2010, 01:14 | #4 |
Форумчанин
Регистрация: 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;
За помощь: Нажмите на весы слева от сообщения!
|
28.09.2010, 18:57 | #5 |
Новичок
Джуниор
Регистрация: 26.09.2010
Сообщений: 2
|
rec - это запись, заносимая в стек
|
29.09.2010, 10:33 | #6 |
Игрок
Форумчанин
Регистрация: 29.10.2006
Сообщений: 367
|
Код:
Жизнь всегда игра. Но смерть - не всегда поражение.
#define true (Math.random()>0.5) //Удачной отладки |
29.09.2010, 15:18 | #7 |
Форумчанин
Регистрация: 10.06.2010
Сообщений: 225
|
гамблер,ты ставишь указатель стэка на ноль,но при этом не очищаешь память.
не хорошо с твоей стороны так делать
За помощь: Нажмите на весы слева от сообщения!
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Проблема со стеком в проге на ассемблере | 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 |