![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#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. |
![]() |
![]() |
![]() |
#2 |
Форумчанин
Регистрация: 10.06.2010
Сообщений: 225
|
![]()
у тебя должно быть несколько функций,push и pop задаёшь некий параметр I который называется указателем на вершину стэка.
потом при каждом сохранении в стэк а это функция push увеличиваешь параметр I.Затем когда тебе понадобилось полностью очистить стэк,то есть вывести все данные из стэка ты прописываешь цикл for I downto 0 do pop из стэка.алгоритм должен быть таков как мне кажется.
За помощь: Нажмите на весы слева от сообщения!
|
![]() |
![]() |
![]() |
#3 | |
Не
Участник клуба
Регистрация: 29.10.2009
Сообщений: 1,456
|
![]() Цитата:
Код:
|
|
![]() |
![]() |
![]() |
#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;
За помощь: Нажмите на весы слева от сообщения!
|
![]() |
![]() |
![]() |
#5 |
Новичок
Джуниор
Регистрация: 26.09.2010
Сообщений: 2
|
![]()
rec - это запись, заносимая в стек
|
![]() |
![]() |
![]() |
#6 |
Игрок
Форумчанин
Регистрация: 29.10.2006
Сообщений: 367
|
![]() Код:
Жизнь всегда игра. Но смерть - не всегда поражение.
#define true (Math.random()>0.5) //Удачной отладки ![]() |
![]() |
![]() |
![]() |
#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 |