unit def24; interface const l = 30; type colors = (red,yellow,green,black); const s_colors: array[colors] of string = ('red','yellow','green','black'); type ptelem = ^telem; telem = record key : integer; data : colors ; end; stack = record m : array[1..l] of telem; hill : integer end; procedure init(var s:stack); function empty(var s:stack):boolean; function top(var s:stack):ptelem; procedure get(var s:stack); procedure print(var s:stack); function kolvo(var s:stack):integer; procedure put(var s:stack; t:telem); implementation procedure init(var s:stack); begin s.hill:=0 end; function empty(var s:stack):boolean; begin empty:=(s.hill=0) end; function top(var s:stack):ptelem; begin top:=@s.m[s.hill] end; procedure get(var s:stack); begin s.hill:=s.hill-1; end; procedure print(var s:stack); var i:integer; begin for i:=s.hill downto 1 do { writeln('Key: ',s.m[i].key:2,'. Data: ',s.m[i].data,'.') } writeln('Key: ',s.m[i].key:2,'. Data: ',s_colors[s.m[i].data],'.') end; function kolvo(var s:stack):integer; begin kolvo:=s.hill end; procedure put(var s:stack; t:telem); begin if s.hill