===== PascalABC.NET =====
1. Короткое, внешне изящное, но крайне неэффективное решение, поскольку массив просматривается ПЯТЬ раз.
begin
var a := ArrRandom(40, 0, 120);
a.Println;
Println('Элементов, равных 30:', a.Count(p -> p = 30));
Println('Сумма элементов:', a.Sum);
Println('Среднее арифметическое элементов:', a.Average);
var (imax, imin) := (a.IndexMax, a.IndexMin);
Println('Максимальный элемент №', imax + 1, '=', a[imax]);
Println('Минимальный элемент №', imin + 1, '=', a[imin])
end.
2. Более длинное решение, но с ОДНИМ просмотром массива и поэтому эффективное.
begin
var a := ArrRandom(40, 0, 120);
a.Println;
var (k, s, imax, imin) := (0, 0, 0, 0);
for var i := 0 to a.High do
begin
if a[i] = 30 then
Inc(k);
s += a[i];
if a[i] > a[imax] then
imax := i
else if a[i] < a[imin] then
imin := i
end;
Println('Элементов, равных 30:', k);
Println('Сумма элементов:', s);
Println('Среднее арифметическое элементов:', s / 40);
Println('Максимальный элемент №', imax + 1, '=', a[imax]);
Println('Минимальный элемент №', imin + 1, '=', a[imin])
end.