PascalABC.NET 3.3.5, сборка 1659 от 09.04.2018Внимание! Если программа не работает, обновите версию!procedure FillStack(st:Stack<integer>; sq:sequence of integer);begin foreach var t in sq do st.Push(t);end;procedure PrintStack(st:Stack<integer>; s:string);begin Write(s); st.Printlnend;procedure ToStack(sta,stb:Stack<integer>; Even:boolean);begin if Even then while sta.Count>0 do begin var v:=sta.Pop; if v.IsEven then begin stb.Push(v); exit end end else while sta.Count>0 do begin var v:=sta.Pop; if v.IsOdd then begin stb.Push(v); exit end endend;begin var st1:=new Stack<integer>; FillStack(st1,Seq(2,13,20,18,1)); PrintStack(st1,'Стек1: '); var st2:=new Stack<integer>; FillStack(st2,Seq(9,11,10,8,4)); PrintStack(st2,'Стек2: '); var st3:=new Stack<integer>; while st1.Count+st2.Count>0 do begin ToStack(st1,st3,True); ToStack(st2,st3,False); end; PrintStack(st3,'Стек3: ') end.
РезультатСтек1: 1 18 20 13 2Стек2: 4 8 10 11 9Стек3: 2 9 20 11 18