![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
Dower |
![]()
Сообщение
#1
|
Новичок ![]() Группа: Продвинутые Сообщений: 4 Регистрация: 3.4.2011 Город: Йошкар-Ола Вы: студент ![]() |
Помогите разобраться с кодом задачи на 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. Не могли бы вы проверить правильно ли он работает и помочь с ним разобраться, нужны хотябы самые общие комментарии по коду. |
Dower |
![]()
Сообщение
#2
|
Новичок ![]() Группа: Продвинутые Сообщений: 4 Регистрация: 3.4.2011 Город: Йошкар-Ола Вы: студент ![]() |
Неужели никто не знает?
|
Dower |
![]()
Сообщение
#3
|
Новичок ![]() Группа: Продвинутые Сообщений: 4 Регистрация: 3.4.2011 Город: Йошкар-Ола Вы: студент ![]() |
Очень нужна ваша помощь, сам разобраться не могу.
|
![]() ![]() |
![]() |
Текстовая версия | Сейчас: 28.5.2025, 12:02 |
Зеркало сайта Решебник.Ру - reshebnik.org.ru