Напишите программу, которая генерирует целочисленный массив, состоящий из 40 элементов в диапазоне от 0 до 120, подсчитывает количество элементов равных 30, подсчитывает сумму всех элементов массива, подсчитывает среднее арифметическое, находит максимальный элемент массива и его номер, минимальный элемент и его номер. все результаты выводит на экран.
с amax и imax. 9 класс,

tivaschhenko tivaschhenko    1   17.11.2019 11:18    3

Ответы
narutoudzumaki228 narutoudzumaki228  10.10.2020 13:42

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.

ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Информатика