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

В заданном стеке найти минимальный по абсолютному значению элемент и удалить все элементы с таким значением. (Искать, перекладывать в дополнительный стек, удалять при перекладывании обратно: [1,7,-1,3,2],получили [7,3,2]).

  1. Ответ
    Ответ дан Аккаунт удален
    PascalABC.NET 3.4.0, сборка 1671 от 31.05.2018
    Внимание! Если программа не работает, обновите версию!

    begin
      var St:=new Stack<integer>;
      foreach var k in ReadSeqInteger('Вводите данные:',ReadInteger('n=')) do
        St.Push(k);
      St.Println; // исходное содержимое стека
      var St1:=new Stack<integer>;
      var min:=MaxInt;
      var k:integer;
      while St.Count>0 do begin
        k:=St.Pop;
        if Abs(k)<min then min:=Abs(k);
        St1.Push(k);
        end;
      while St1.Count>0 do begin
        k:=St1.pop;
        if Abs(k)<>min then St.Push(k)
        end;
      St.Println
    end.

    Пример
    n= 5
    Вводите данные: 2 3 -1 7 1
    1 7 -1 3 2
    7 3 2
Самые новые вопросы