В
Все
М
Математика
А
Английский язык
Х
Химия
Э
Экономика
П
Право
И
Информатика
У
Українська мова
Қ
Қазақ тiлi
О
ОБЖ
Н
Немецкий язык
Б
Беларуская мова
У
Українська література
М
Музыка
П
Психология
А
Алгебра
Л
Литература
Б
Биология
М
МХК
О
Окружающий мир
О
Обществознание
И
История
Г
Геометрия
Ф
Французский язык
Ф
Физика
Д
Другие предметы
Р
Русский язык
Г
География

(pascal) из двух стеков, создать новый стек элементы брать по-очередно из исходных стеков из первого-четные, из второго нечетные: [1,18,20,13,2] , [4, 8, 10,11,9], получили [2,9,20,11,18] (через процедуры)

Показать ответ
Ответ:
Angelina1409
Angelina1409
08.10.2020 10:16
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
0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота