profile
Опубликовано 5 лет назад по предмету Информатика от Travka24

(Pascal)
Из двух стеков, создать Новый Стек Элементы брать по-очередно из исходных стеков Из первого-четные, из ВТОРОГО Нечетные: [1,18,20,13,2] , [4, 8, 10,11,9], получили [2,9,20,11,18] (через процедуры)

  1. Ответ
    Ответ дан Аккаунт удален
    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.Println
    end;

    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
          end
    end;

    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
Самые новые вопросы