ЗА РЕШЕНИЕ И ПОСТАВЛЮ ЛАЙК напишите шаблонную функцию, которая принимает в качестве аргумента массив, размер массива и целое число k. Функция сдвигает все элементы на K вправо
function ProdPos(a: V): longint; var i: integer; begin Result := 1; foreach var p: longint in a do if p > 0 then Result := Result * p end;
procedure InitMas(var a: V; title: string); var i: integer; begin writeln(title, '(', length(a, 0), '). Вводите элементы.'); for i := 0 to length(a, 0) - 1 do read(a[i]) end;
Procedure Vvod(Var Q:mas; p:integer); var i:integer; begin for i:=1 to p do read(Q[i]); end;
program obrab(N:mas; w:integer; var max:real;); var i:integer; begin max:=1; for i:=1 to w do begin if N[i]>0 then max:=max*N[i]; end; end; program sravnenie(U:mas; O:mas; m.r:integer; maxA,maxB:real); var i,j:integer
begin if maxA>maxB then begin for i:=1 to m do write(U[i]); end else begin for i:=1 to r do write(O[i]); end; end;
begin writeln('vvedite kol-vo elementov mas1'); readln(n); Vvod(A,n); writeln('vvedite kol-vo elementov mas2'); readln(l); Vvod(B,l); obrab(A,n,max1); obrab(B,l,max2); sravnenie(A,B,n,l,max1,max2); end.
V = array of integer;
function ProdPos(a: V): longint;
var
i: integer;
begin
Result := 1;
foreach var p: longint in a do
if p > 0 then Result := Result * p
end;
procedure InitMas(var a: V; title: string);
var
i: integer;
begin
writeln(title, '(', length(a, 0), '). Вводите элементы.');
for i := 0 to length(a, 0) - 1 do
read(a[i])
end;
procedure GetMas(var a: V; dim: integer; title: string);
begin
SetLength(a, dim);
InitMas(a, title);
end;
const
n1 = 10;
n2 = 15;
var
A, B: V;
begin
GetMas(A, n1, 'Массив А');
GetMas(B, n2, 'массив B');
writeln('Большее произведение положительных ', max(ProdPos(A), ProdPos(B)))
end.
Тестовый прогон:
Массив А(10). Вводите элементы.
1 1 1 1 2 1 2 2 1 5
массив B(15). Вводите элементы.
1 0 2 4 0 1 -3 -4 1 2 3 1 -3 0 2
Большее произведение положительных 96