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

Задача

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

Пояснение к задаче и алгоритм решения

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

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

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

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

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

Исходный код на языке программирования Pascal

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.

Пример(ы) выполнения программы на языке Pascal

-1 2 -5 -5 -3 1 4 -2 -2 -1 -4 3 -2 1 -2 -1 1 -4 4 4
   2.50

Исходный код на языке программирования C

#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);
}

Пример(ы) выполнения программы на языке C

  1 -1  2 -3  4 -2 -2 -1 -4 -2 -5  3 -2 -3  1  0  4 -4 -5 -1
 2.50

Исходный код на языке программирования Python

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))

Пример(ы) выполнения программы на языке Python

[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

Исходный код на языке программирования Basic

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

Пример(ы) выполнения программы на языке Basic

-4 4 -4 3 -3 -3 -4 -2 -5 0 4 4 3 3 -5 -2 -1 3 0 1
3.125

Тема

Массивы

Уровень сложности

Простой

Дата публикации