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

Заполнить очередь случайными числами из интервала [-20; 40]. Найти сумму последнего нечетного элемента и третьего элемента очереди. Результат поместить в очередь. Удалить 4 элемент из очереди. После выполнения каждой операции выводить содержимое очереди на экран. (ЧЕРЕЗ ПРОЦЕДУРЫ)

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

    type
      tQ=queue<integer>;

    procedure ЗаполнениеОчереди(q:tQ; n:integer);
    begin
      Randomize;
      loop n do begin
        var k:=Random(-20,40);
        q.Enqueue(k)
        end;
    end;

    procedure СуммаНужныхЭлементов(q:tQ; var s:integer);
    begin
      var ko,k:integer;
      for var i:=1 to q.Count do begin
        k:=q.Dequeue; q.Enqueue(k);
        if k.IsOdd then ko:=k;
        if i=3 then s:=k
        end;
      s+=ko  
    end;

    procedure УдалитьЭлемент(q:tQ; p:integer);
    begin
      for var i:=1 to q.Count do begin
        var k:=q.Dequeue;
        if i<>p then q.Enqueue(k)
        end
    end;

    begin
      var MyQ:=new tQ;
      var n:=ReadInteger('Кол-во элементов (не менее 4):');
      ЗаполнениеОчереди(MyQ,n);
      MyQ.Println;
      var s:integer;
      СуммаНужныхЭлементов(MyQ,s);
      MyQ.Enqueue(s); // искомая сумма помещена в очередь
      MyQ.Println;
      УдалитьЭлемент(MyQ,4);
      MyQ.Println
    end.

    Пример
    Кол-во элементов (не менее 4): 13
    -7 12 -18 4 23 -1 15 -11 9 12 5 3 2
    -7 12 -18 4 23 -1 15 -11 9 12 5 3 2 -15
    -7 12 -18 23 -1 15 -11 9 12 5 3 2 -15
Самые новые вопросы