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.
Внимание! Если программа не работает, обновите версию!
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