Среднее арифметическое положительных элементов массива

Найти среднее арифметическое положительных элементов линейного массива.

Данная задача имеет смысл, если массив заполнен не только положительными числами, но также содержит отрицательные числа и/или возможно нули.

Для заполнения массива можно воспользоваться генератором псевдослучайных чисел. Допустим, надо сгенерировать числа в диапазоне от -5 до 4 включительно. Всего значений 10, смещение на -5. Таким образом, с помощью стандартной функции генерируем числа от 0 до 10 и вычитаем из них 5.

Среднее арифметической находится как отношение суммы чисел к количеству этих чисел. Поскольку надо найти среднее арифметическое только положительных чисел, то, перебирая массив, нам надо определять положительные числа, добавлять их к общей сумме, а также считать их количество. Для этого потребуется две переменные (например, sum и qty), которым до цикла следует присвоить значение 0.

Осуществлять проверку с помощью условного оператора if можно как в отдельном цикле перебора массива, так и в цикле его заполнения. Если очередной элемент массива больше нуля, то следует его значение добавить к переменной sum, а значение переменной qty увеличить на 1.

После того как все элементы массива проверены, надо найденную сумму положительных чисел разделить на их количество. Тем самым будет найдено среднее арифметическое.

const N = 20;
 
var
    arr: array[1..N] of integer;
    i, qty: byte;
    sum: word;
begin
    sum := 0;
    qty := 0;
    randomize;
    for i:=1 to N do begin
        arr[i] := random(10)-5;
        write(arr[i],' ');
        if arr[i] > 0 then begin
            sum := sum + arr[i];
            qty := qty + 1;
        end;
    end;
    writeln;
    writeln(sum/qty:7:2);    
end.
-1 2 -5 -5 -3 1 4 -2 -2 -1 -4 3 -2 1 -2 -1 1 -4 4 4
   2.50
#include <stdio.h>
#define N 20
 
main() {
    int a[N], i, q;
    float sum;
    q = 0;
    sum = 0;
    srand(time(NULL));
    for (i=0; i<N; i++) {
        a[i] = rand() % 10 - 5;
        printf("%3d", a[i]);
        if (a[i] > 0) {
            sum += a[i];
            q += 1;
        }
    }
    printf("\n");
    printf("%5.2f\n", sum/q);
}
  1 -1  2 -3  4 -2 -2 -1 -4 -2 -5  3 -2 -3  1  0  4 -4 -5 -1
 2.50
from random import random
N = 20
a = []
for i in range(N):
    n = int(random() * 10) - 5
    a.append(n)
print(a)
 
s = q = 0
for i in range(N):
    if a[i] > 0:
        s += a[i]
        q += 1 
print("%5.2f" % (s/q))
[1, -2, -3, 0, -4, -1, 4, 0, -3, -3, 2, 4, 0, -1, -4, -2, -1, -2, 1, -5]
 2.40
алг среднее арифм полож
нач
    цел таб a[1:20]
    цел i
    вещ sum, qty
    sum := 0
    qty := 0
    нц для i от 1 до 20
        a[i] := int(rand(-5,5))
        вывод a[i], " "
        если a[i] > 0 то
            sum := sum + a[i]
            qty := qty + 1
        все
   кц
   вывод нс
   вывод sum/qty
кон
4 4 -2 -4 -3 0 -2 0 -4 -4 3 1 2 3 0 -4 4 -4 1 -1
2.75
N = 20
dim arr(N)
sum = 0
qty = 0
for i=0 to N-1
        arr[i] = int(rand()*10)-5
        print arr[i] + " ";
        if arr[i] > 0 then
                sum = sum + arr[i]
                qty = qty + 1
        endif
next i
print
print sum/qty
-4 4 -4 3 -3 -3 -4 -2 -5 0 4 4 3 3 -5 -2 -1 3 0 1
3.125