Элементы массива, которые меньше среднего арифметического

Задача

Найти в массиве те элементы, значение которых меньше среднего арифметического, взятого от всех элементов массива.

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

Алгоритм решения задачи:

  1. Посчитать сумму всех элементов массива. Для этого до цикла вводится переменная для суммы (например, sum). Далее в цикле перебираются элементы массива и значение каждого добавляется к этой переменной. Подсчет суммы можно выполнить в том же цикле, что и заполнение массива.
  2. Когда сумма элементов посчитана, находится среднее арифметическое, которое равно сумме разделенной на количество элементов массива.
  3. Массив перебирается в цикле, каждый элемент сравнивается с найденным средним значением. Если элемент меньше, то он выводится на экран (или сохраняется в другом массиве).

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

const N = 10;
var
    a: array[1..N] of integer;
    i: byte;
    avrg: real;
    sum: integer;
begin
    randomize;
    for i:=1 to N do a[i]:=random(50)+1;
    sum := 0;
    for i:=1 to N do sum := sum + a[i];
    avrg := sum/N;
   
    // весь массив
    for i:=1 to N do write(a[i]:3);
    writeln;
   
    writeln('Среднее арифм.: ',avrg:4:2);
   
    // больше avrg    
    for i:=1 to N do if a[i]<avrg then write(a[i]:3);
    writeln;
end.

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

 13 23 45  2  9 28 47 30 18 12
Среднее арифм.: 22.70
 13  2  9 18 12

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

#include <stdio.h>
#define N 10

main() {
    int a[N];
    int i;
    float sum, avrg;
    srand(time(NULL));
    sum = 0;
    for (i=0; i<N; i++) {
        a[i] = rand() % 100;
        printf("%3d", a[i]);
        sum += a[i];
    }
    printf("\n");
   
    avrg = sum/N;
    printf("%.2f\n",avrg);
    for (i=0; i<N; i++)
        if (a[i] < avrg) printf("%3d", a[i]);
    printf("\n");
}

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

 38 67 71 56 34 11 17 84 92 61
53.10
 38 34 11 17

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

from random import random
N = 10
arr = [0] * N
for i in range(N):
    arr[i] = int(random() * 100)
print(arr)
avrg = sum(arr)/N
print(avrg)
less = []
for i in range(N):
    if arr[i] < avrg:
        less.append(arr[i])
print(less)

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

[90, 24, 8, 0, 48, 52, 68, 38, 21, 70]
41.9
[24, 8, 0, 38, 21]

Особенности решения на языке программирования Python

В Питоне сумму элементов списка можно найти с помощью встроенной функции sum().

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

алг меньше среднего
нач
  цел N = 10
  цел таб a[1:N]
  цел i
  вещ sum, avrg
  sum := 0
  нц для i от 1 до N
     a[i] := irand(-50,50)
     вывод a[i]:4
     sum := sum + a[i]
  кц
  вывод нс
  avrg := sum/N
  вывод avrg, нс
  нц для i от 1 до N
    если a[i] < avrg то
       вывод a[i]:4
    все
  кц
кон

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

 -21  42 -23  25  46  20  12 -45 -35 -45
-2.4
 -21 -23 -45 -35 -45

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

N = 10
dim arr(N)
sum = 0
for i=0 to N-1
        arr[i] = int(rand()*100)
        print arr[i] + " ";
        sum = sum + arr[i]
next i
print
avrg = sum/N
print avrg
for i=0 to N-1
        if avrg > arr[i] then print arr[i] + " ";
next i

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

46 16 26 4 36 91 51 99 70 33
47.2
46 16 26 4 36 33

Тема

Массивы

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

Простой

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