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.