Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 20.04.2011, 11:52   #1 (permalink)
Stero
Новичок
 
Регистрация: 20.04.2011
Сообщений: 1
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Стек в Turbo Pascal

Задали вот такую задачу.
Дан указатель P1 на вершину стека (если стек пуст, то P1=NIL). Извлеч из стека все элементы и вывести их значения. Вывести также количество известных элементов N (для пустого стека вывести 0). после извлечения элементов из стека освобождать память которую они занимали.

Вот есть код
Код:
uses crt;
type PSTRC=^Strc;
     Strc=record
     inf:integer;
     ptr:Pstrc;
end;
var S1,s2:PSTRC;
    i,k,g,p:integer;
    err:boolean;
    a:array [1..20] of integer;
Procedure Dop(var S:Pstrc;dat:integer);
var nov:Pstrc;
begin
New(nov);
nov^.inf:=dat;
nov^.Ptr:=s;
S:=nov;
end;
Function Ud(var S:Pstrc; var err:boolean):integer;
var old:Pstrc;
begin
 if s<>Nil then
  begin
   old:=S;
   S:=S^.ptr;
   Ud:=old^.inf;
   dispose(old);
   err:=false
  end
 else
  begin
   Ud:=0;
   err:=true
  end
end;
Function Cht(s:PSTRC; var err:boolean):integer;
begin
if s<>Nil then
 begin
  write('inf=',s^.inf:3);
  err:=false;
  Cht:=s^.inf;
 end
else begin
      writeln('stack pust');
      err:=True;
      cht:=0;
     end;
end;
BEGIN
 clrscr;
 i:=1;
 k:=1;
 while k<>0 do
  begin
   readln(k);
   Dop(s1,k);
  end;
 while s1<>Nil do
  begin
   a[i]:=Ud(s1,err);
   inc(i);
  end;
 for k:=i downto 1 do
  dop(s2,a[k]);
 for k:=1 to i do
  writeln(ud(s2,err));
readln;
END.
Элементы в стек заносятся и вроде правильно выводятся.
Не могли бы вы проверить правильность его работы, а то почему то в конце при любом раскладе 0 выводится.
Stero вне форума   Ответить с цитированием

Старый 20.04.2011, 11:52
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Рекомендую набраться информации из похожих топиков

Turbo Pascal 8, дано натуральное число n
Cтек, Turbo Pascal
Turbo Pascal. Оператор CASE
Синтаксический анализатор. Turbo Pascal

Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 02:35.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.