<em>// PascalABC.NET 3.3, сборка 1627 от 27.01.2018</em>
<em>// Внимание! Если программа не работает, обновите версию!</em>
begin
var a:=ArrRandom(ReadInteger('n='),-50,50); a.Println;
var imin:=a.IndexMin; a:=(a?[:imin]+Arr(0)+a?[imin:]).ToArray;
var imax:=a.IndexMax; a:=(a?[:imax+1]+Arr(0)+a?[imax+1:]).ToArray;
a.Println
end.
<u>Пример</u>
n= 15
-32 11 7 8 -25 42 39 18 25 -33 -4 10 41 25 -36
-32 11 7 8 -25 42 0 39 18 25 -33 -4 10 41 25 0 -36
Const Sz = 100; // Размер массива
var
a: array [1..Sz] of integer;
N: integer; // Количество элементов в массиве
i: integer;
begin
N := 20;
for i:=1 to N do
a[i] := Random(20)-10;
writeln('Элементы массива: ');
for i:=1 to N do
write (a[i],' ');
writeln;
for i:=1 to N do
begin
if (a[i]=0) then
writeln(a[i],' ',i);
end;
end.
Ваша схема, в общем, верна. Её можно чуть упростить, убрать проверку Р.