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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.05.2011, 14:45   #1
Bizunov
Пользователь
 
Регистрация: 16.04.2011
Сообщений: 36
По умолчанию Стек

Всем привет )
Реализовал простенький стек, проверьте его на правильность работы ) Просто, иногда (кажется, после swap'а) она вместо вершины возвращает ноль (((
Код:
unit StaticStack;

interface
{ Константы }
const
  StackLen = 128;
{ Типы }
type
  TStack = record
    Data: array[1..StackLen] of integer;
    Ind : integer;
  end;
{ Объявление функций и процедур }
procedure StackPush(var Stack: TStack; Val: integer);
function  StackPop (var Stack: TStack): integer;
procedure StackSwap(var Stack: TStack);
function  StackEmpty(Stack: TStack): boolean;

implementation
{ Стек }
//Добавление в стек
procedure StackPush(var Stack: TStack; Val: integer);
begin
  if (Stack.Ind <> StackLen) then begin
    Inc(Stack.Ind); Stack.Data[Stack.Ind] := Val;
  end;
end;
//Вытвлкивание из стека
function StackPop (var Stack: TStack): integer;
begin
  Result := 0;
  if (Stack.Ind <> 0) then begin
    Result := Stack.Data[Stack.Ind]; Dec(Stack.Ind);
  end;
end;
//Меняем местами вершины
procedure StackSwap(var Stack: TStack);
var
  Buff_1: integer;
  Buff_2: integer;
begin
  Buff_1 := Stack.Data[Stack.Ind];
  Buff_2 := Stack.Data[Stack.Ind-1];
  Stack.Data[Stack.Ind-1] := Buff_1;
  Stack.Data[Stack.Ind] := Buff_2;
end;
//Пуст ли стек?
function StackEmpty(Stack: TStack): boolean;
begin
  Result := (Stack.Ind = 0);
end;

end.
Bizunov вне форума Ответить с цитированием
Старый 08.05.2011, 15:52   #2
Bizunov
Пользователь
 
Регистрация: 16.04.2011
Сообщений: 36
По умолчанию

Все, не надо ни чего тестить. Стек работает нормально, ошибка была в другом месте.
Bizunov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Стек С++ Верунчик Помощь студентам 3 28.09.2011 08:39
C++ Стек phantom4eg Помощь студентам 0 31.05.2010 01:16
Стек в С++ skiffter Помощь студентам 3 26.03.2010 09:57
стек Dimarik Общие вопросы C/C++ 3 28.09.2009 22:14