Как найти среднее арифметическое элементов одномерного массива

Например:

int[] numbers = {5, 8, 12, -18, -54, 84, -35, 17, 37};

Как найти среднее?
Какой алгоритм, или может есть специальные функции для этого?

Nofate's user avatar

Nofate

34.3k15 золотых знаков64 серебряных знака93 бронзовых знака

задан 17 июл 2015 в 16:55

Александр's user avatar

АлександрАлександр

9736 золотых знаков13 серебряных знаков33 бронзовых знака

1

Ну например:

IntStream.of(numbers).average();

Это Java 8, stream API. Проверка: http://ideone.com/hSng8I

ответ дан 17 июл 2015 в 16:57

VladD's user avatar

VladDVladD

206k27 золотых знаков289 серебряных знаков521 бронзовый знак

6

Сам алгоритм, который работает для всех версий Java:

// среднее арифметическое - сумма всех чисел деленная на их количество
int[] numbers = {5, 8, 12, -18, -54, 84, -35, 17, 37};

double average = 0;
if (numbers.length > 0)
{
    double sum = 0;
    for (int j = 0; j < numbers.length; j++) {
         sum += numbers[j];
    }
    average = sum / numbers.length;
}

ответ дан 17 июл 2015 в 21:54

pavelip's user avatar

1

OptionalDouble average = Arrays.stream(numbers).average();

ответ дан 17 июл 2015 в 17:36

kandi's user avatar

kandikandi

5,10910 золотых знаков47 серебряных знаков96 бронзовых знаков

class average {
    public static void main(String args[]) {
        int num [] = {5, 8, 12, -18, -54, 84, -35, 17, 37};
        double sum = 0;
        for (int x: num) {
        sum += x;
        }
            System.out.print("среднее арифметическое чисел равно: " + sum/num.length);
    }
}

ответ дан 22 авг 2018 в 14:10

Бахтияр Акпалинов's user avatar

Перейти к содержанию

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

Просмотров 7.2к. Обновлено 17 сентября 2021

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

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

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

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

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

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

Pascal

Язык Си

Python

КуМир

Basic-256

Решение задач на операторы цикла для обработки одномерных массивов. Циклы for, while, do…while


Содержание

  • Решение задач
    • 1. Нахождение суммы элементов массива из n вещественных чисел
      • 1.1. Решение с использованием цикла for
      • 1.2. Решение с использованием цикла while
      • 1.3. Решение задачи. Цикл do…while
    • 2. Нахождение среднего арифметического элементов массива из n вещественных чисел.
      • 2.1. Решение. Цикл for
      • 2.2. Решение. Цикл while
      • 2.3. Решение. Цикл do…while
    • 3. Поэлементное копирование массивов
      • 3.1. Цикл for
      • 3.2. Цикл while
      • 3.3. Цикл do…while
    • 4. Обращение массива (получить результирующий массив, обратный к исходному)
    • 5. Обращение массива без использования дополнительного массива
  • Связанные темы

Поиск на других ресурсах:

1. Нахождение суммы элементов массива из n вещественных чисел.
1.1. Решение с использованием цикла for
// сумма элементов массива вещественных чисел
int n=10; // задать значение n 
float[] A = new float[n];
float sum; // результат - сумма элементов массива

// задать значение n
n = 10;

// заполнение массива A произвольными значениями
for (int i=0; i<n; i++)
    A[i] = 0.1f * i;

// сначала обнулить значение sum
sum = 0;

// цикл вычисления суммы
for (int i=0; i<n; i++)
    sum = sum + A[i];
1.2. Решение с использованием цикла while

Решение задачи с использованием цикла while

// сумма элементов массива вещественных чисел - цикл while
int n = 10; // задать значение n
float[] A = new float[n];
float sum; // результат - сумма элементов массива
int i; // дополнительная переменная

// заполнение массива A произвольными значениями через цикл while
i=0;
while (i<n)
{
    A[i] = 0.1f*i;
    i++;
}

// цикл вычисления суммы
// сначала обнулить значение sum и i
sum = 0;
i = 0;

// цикл while для вычисления суммы
while (i<n)
{
    sum += A[i];
    i++;
}
1.3. Решение задачи. Цикл do…while
// сумма элементов массива вещественных чисел - цикл do..while
int n = 10; // задать значение n
float[] A = new float[n]; // массив
float sum; // результат - сумма элементов массива
int i; // дополнительная переменная

// заполнение массива A произвольными значениями через цикл do..while
i=0;
do
{
    A[i] = 0.1f*i;
    i++;
}
while (i<n);

// цикл вычисления суммы
// сначала обнулить значение sum и i
sum = 0;
i = 0;

// цикл do..while для вычисления суммы
do
{
    sum += A[i];
    i++;
}
while (i<n);
2. Нахождение среднего арифметического элементов массива из n вещественных чисел.

Чтобы найти среднее арифметическое элементов массива, сначала нужно найти сумму элементов массива, а потом эту сумму поделить на число элементов массива.

2.1. Решение. Цикл for

В примере пропущен ввод массива и количества элементов массива n

// среднее арифметическое элементов массива вещественных чисел - цикл for
int n = 10; // n - количество элементов массива
float[] A = new float[n]; // объявление массива
float avg; // результат - среднее арифметическое
int i; // дополнительная переменная

// ввод массива A и количества элементов массива n
// ...

// сумма вычисляется в переменной avg
avg = 0;

// цикл for для вычисления суммы
for (i=0; i<n; i++)
{
    avg += A[i];
}

// вычисление среднего арифметического
avg = avg / n;
2.2. Решение. Цикл while

В примере пропущен ввод массива и количества элементов массива n.

// среднее арифметическое элементов массива вещественных чисел - цикл while
int n = 10; // n - количество элементов массива
float[] A = new float[n]; // объявление массива
float avg; // результат - среднее арифметическое
int i; // дополнительная переменная

// ввод массива A и количества элементов массива n
// ...

// сумма вычисляется в переменной avg
avg = 0;
i = 0;

// цикл while для вычисления суммы
while (i<n)
{
    avg += A[i];
    i++;
}

// вычисление среднего арифметического
avg = avg / n;
2.3. Решение. Цикл do…while

В примере пропущен ввод массива и количества элементов массива n

// среднее арифметическое элементов массива вещественных чисел - цикл do..while
int n = 10; // n - количество элементов массива
float[] A = new float[n]; // объявление массива
float avg; // результат - среднее арифметическое
int i; // дополнительная переменная

// ввод массива A и количества элементов массива n
// ...

// сумма вычисляется в переменной avg
avg = 0;
i = 0;

// цикл do..while для вычисления суммы
do
{
    avg += A[i];
    i++;
}
while (i<n);

// вычисление среднего арифметического
avg = avg / n;
3. Поэлементное копирование массивов
3.1. Цикл for

В данном примере приводится фрагмент кода, копирующий массив A из 10 вещественных чисел (float) в массив B.

// поэлементное копирование массивов
int n = 10; // n - количество элементов массива
float[] A = new float[n]; // массив-источник
float[] B = new float[n]; // массив-назначение
int i; // дополнительная переменная

// ввод массива A и количества элементов массива n
// ...

// цикл копирования A => B
for (i=0; i<n; i++)
    B[i] = A[i];


3.2. Цикл while

Фрагмент копирования массива A в массив B с использованием цикла while

// поэлементное копирование массивов
int n = 10; // n - количество элементов массива
float[] A = new float[n]; // массив-источник
float[] B = new float[n]; // массив-назначение
int i; // дополнительная переменная

// ввод массива A и количества элементов массива n
// ...

// цикл копирования A => B
i=0;
while (i<n)
{
    B[i] = A[i];
    i++;
}
3.3. Цикл do…while

Реализация копирования массивов с использованием цикла do…while

// поэлементное копирование массивов
int n = 10; // n - количество элементов массива
float[] A = new float[n]; // массив-источник
float[] B = new float[n]; // массив-назначение
int i; // дополнительная переменная

// ввод массива A и количества элементов массива n
// ...

// цикл копирования A => B
i=0;
do
{
    B[i] = A[i];
    i++;
}
while (i<n);
4. Обращение массива (получить результирующий массив, обратный к исходному)

Пусть имеются два массива с именами A и B. Массив A задается. Получить результирующий массив B, обратный к исходному массиву A (элементы массива B идут в обратном порядке по отношению к массиву A).
В данном примере приводится реализация обращения массива с помощью трех известных операторов цикла.

// Получение обратного массива
int n = 10; // n - количество элементов массива
float[] A = new float[n]; // массив-источник
float[] B = new float[n]; // обратный массив - результат
int i; // дополнительная переменная

// ввод массива A и количества элементов массива n
// ...

// решение задачи с помощью цикла do...while обратного копирования A => B
i=0;
do
{
    B[i] = A[n-i-1];
    i++;
}
while (i<n);

// решение с помощью цикла for
for (i=0; i<n; i++)
    B[i] = A[n-i-1];

// решение с помощью цикла while
i=0;

while (i<n)
{
    B[i] = A[n-i-1];
    ++i;
}
5. Обращение массива без использования дополнительного массива

Задан массив A с n вещественных чисел. Реализовать операцию обращения массива без использования дополнительного массива.
В приведенном ниже коде реализовано обращение массива с использованием операторов циклов for, while, do…while.

Пусть задано следующее описание типов данных

// Обращение массива A
int n = 10; // n - количество элементов массива
double[] A = new double[n]; // обрабатываемый массив
int i; // дополнительная переменная
double t; // дополнительная переменная

// ввод массива A и количества элементов массива n
// ...

Тогда решение задачи с использованием цикла do…while

// решение задачи с помощью цикла do...while обратного копирования A => B 
i=0;
do
{
    t = A[i];
    A[i] = A[n-i-1];
    A[n-i-1] = t;
    i++;
}
while (i < (n/2));

Решение задачи с использованием цикла for

// решение с помощью цикла for
for (i=0; i<n/2; i++)
{
    t = A[i]; // использование дополнительной переменной t
    A[i] = A[n-i-1];
    A[n-i-1] = t;
}

Решение задачи с использованием цикла while.

// решение с помощью цикла while
i=0;

while (i<n/2)
{
    t = A[i];
    A[i] = A[n-i-1];
    A[n-i-1] = t;
    i++;
}

Связанные темы

  • Одномерные массивы. Примеры решения задач на одномерные массивы. Массивы структур. Массивы классов
  • Многомерные массивы. Ступенчатые массивы

Среднее
арифметическое (обозначим как SA)
всех значений элементов массива
подсчитывается по формуле:

SA
= S / К,

где
S – это сумма всех
элементов, K – количество
просуммированных элементов. Алгоритмы
поиска суммы и количества элементов
были подробно рассмотрены в п/п 2.2.3.1. Но
в тех случаях, когда SA
находят только среди элементов,
удовлетворяющих некоторому условию,
следует учитывать тот факт, что таких
элементов в массиве может и не быть, и
тогда К = 0. Чтобы избежать деления на 0,
необходимо при получении значения SA
осуществлять соответствующую проверку:
К > 0. На рис. 9 приведена блок-схема
алгоритма поиска SA
положительных элементов и фрагмент
программы.

Среднее
геометрическое значений массива
(обозначим через SG)
вычисляется по следующей формуле:

SG
= K
P,

где
Р – произведение элементов массива, K
– количество элементов. Аналогично,
как и в алгоритме поиска SА
элементов, удовлетворяющих некоторому
условию, необходимо учитывать вариант
К = 0. На рис. 10 приведена блок-схема
алгоритма поиска среднего геометрического
отрицательных элементов массива и
соответствующий фрагмент программы.

S:=
O;

K
:= 0;

for
i:=1 to N do

if
a[i]> 0 then

begin

S
:= S + A[i];

K
:= K +1;

end;

if
K > 0 then

begin

SA
:= S/K;

writeln
(‘ SA= ‘, SA);

end

else

writeln(‘
K = 0 ‘);

… *

Рис.
9

P:=
1;

K
:= 0;

for
i:=1 to N do

if
A[i]< 0 then

begin

P
:= P* A[i];

K
:= K +1;

end;

if
K > 0 then

begin

SG
:= EXP(1/K * LN(P)) ;

writeln
(‘ SG= ‘, SG);

end

else

writeln(‘
K = 0 ‘);

Рис. 10

2.2.3.3. Обработка элементов одномерного массива, имеющих чётные индексы

В
некоторых задачах требуется обработать
не все подряд элементы массива, а лишь
те, индексы которых кратны определённому
числу.

Пусть,
например, требуется умножить на 2 значения
элементов с чётными индексами. Понятно,
что обработку массива придётся начать
с элемента, имеющего номер 2, т.е. переменная
i,
обозначающая
индекс элемента, примет начальное
значение, равное
2. Выбирать из массива элементы для
обработки следует «перешагивая»
через элемент, т.е. индекс i
будет изменяться с шагом
2.

Б

лок-схема
описанного алгоритма приведена на
рисунке 11. Фрагмент
программы записан ниже. В нём использован
не привычный уже цикл со счётчиком (цикл
FOR),
а универсальный цикл «пока»
(цикл WHILE),
который, в отличие от FOR,
приспособлен к работе
с любым шагом (в том числе и с шагом 2).

i:=2;

while
i < =N do

begin

A[ i ] := A[ i ] * 2;

i:=i+2;

end;


Рис.11

Следует
обратить внимание, что в случае работы
с нечетными индексами начальное значение
i:=1,
i
будет изменяться с шагом 2. С помощью
подобных алгоритмов можно обрабатывать
элементы массива с индексами, кратными
любому числу. Например,
найти сумму элементов с индексами,
кратными 3 ( i=3;
шаг +3) заменить нулём каждый
четвёртый элемент массива и т.п.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]

  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #

16 / 1 / 0

Регистрация: 24.07.2012

Сообщений: 27

1

Одномерные массивы: Найти среднее арифметическое всех элементов массива

01.10.2012, 14:48. Показов 122218. Ответов 4


Студворк — интернет-сервис помощи студентам

Одномерные массивы

Задача:

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



1



Programming

Эксперт

94731 / 64177 / 26122

Регистрация: 12.04.2006

Сообщений: 116,782

01.10.2012, 14:48

4

user_p01

19 / 19 / 5

Регистрация: 03.11.2011

Сообщений: 80

01.10.2012, 14:56

2

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
using namespace std;
int main()
{
    setlocale(LC_ALL, "rus");
    int n, i;
    float a[50], sum=0;
    cout << "Введите размерность:n";
    cin >> n;
    cout << "Введите массив:n";
    for (i=0; i<n; i++)
        cin >> a[i];
    for (i=0; i<n; i++)
        sum+=a[i];
    cout << "Среднее арифметическое:n" << sum/n << endl;
    system("pause");
    return 0;
}



1



David Sylva

1321 / 983 / 267

Регистрация: 17.05.2012

Сообщений: 2,687

01.10.2012, 14:57

3

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream> 
 
int main() 
{   
    const int size = 10;
    int array[size] = { 12, 45, 6, 7, 11, 56, 90, 45, 23, 6 }; 
    int i; 
    int summa = 0; 
 
    for ( i = 0; i < 10; i++) 
        summa += array[i]; 
    std::cout << "Average " << summa / 10 << std::endl;
}



3



0 / 0 / 0

Регистрация: 18.11.2015

Сообщений: 25

18.11.2015, 22:45

4

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



0



1321 / 983 / 267

Регистрация: 17.05.2012

Сообщений: 2,687

19.11.2015, 11:42

5

Regis, Суммируй отрицательные элементы, и заведи счетчик этих отрицательных элементов. Потом сумму отрицательных элементов, делишь на количество отрицательных элементов.



1



Добавить комментарий