// PascalABC.NET 3.2, сборка 1362 от 14.12.2016
// Внимание! Если программа не работает, обновите версию!
const
n=34;
begin
// 1
var R:=ArrRandom(n,-8,8); R.Println;
// 2
var b:=R.Slice(Trunc(0.75*n)-1,3);
Writeln('Ср.гармоническое= ',b.Count/b.Aggregate(0.0,(x,y)->x+1.0/y));
// 3
var m:=R.Batch(n div 3).ToArray[1].Where(x->x.IsEven).MinBy(x->abs(x));
Writeln('Минимальный по модулю= ',m);
// 4
var R2:=R.Select((x,i)->(x,i)).Batch(n div 2).ToArray;
var r21:=R2[0].Where(x->x[0]<0).OrderBy(x->sqr(x[0]));
var ind:=r21+R2[1].Where(x->x[0]<0).OrderBy(x->sqr(x[0])).ToArray;
var ind1:=ind.UnZipTuple;
var aVal:=ind1[0].ToArray;
var aInd:=ind1[1].Sorted.ToArray;
for var i:=0 to aVal.Count-1 do R[aInd[i]]:=aVal[i];
R.Println
end.
Пример
8 -3 2 -2 6 6 7 6 -7 -5 -4 6 2 2 1 1 -6 1 -1 -5 8 4 1 7 1 1 2 -8 -8 1 -7 1 8 -6
Ср.гармоническое= 7.07368421052631
Минимальный по модулю= 2
8 -2 2 -3 6 6 7 6 -4 -5 -6 6 2 2 1 1 -7 1 -1 -5 8 4 1 7 1 1 2 -6 -7 1 -8 1 8 -8