Например:
int[] numbers = {5, 8, 12, -18, -54, 84, -35, 17, 37};
Как найти среднее?
Какой алгоритм, или может есть специальные функции для этого?
Nofate♦
34.3k15 золотых знаков64 серебряных знака93 бронзовых знака
задан 17 июл 2015 в 16:55
АлександрАлександр
9736 золотых знаков13 серебряных знаков33 бронзовых знака
1
Ну например:
IntStream.of(numbers).average();
Это Java 8, stream API. Проверка: http://ideone.com/hSng8I
ответ дан 17 июл 2015 в 16:57
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
1
OptionalDouble average = Arrays.stream(numbers).average();
ответ дан 17 июл 2015 в 17:36
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
Среднее
арифметическое (обозначим как 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) заменить нулём каждый
четвёртый элемент массива и т.п.
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
- #
- #
- #
- #
- #
- #
- #
- #
- #
- #
- #
- js массивы
Ответы
Чтобы найти среднее арифметическое элементов массива, нужно сумму элементов массива разделить на длину массива. Для нахождения суммы элементов массива можно использовать функцию высшего порядка или цикл.
const getAverage = (numbers) => {
const sum = numbers.reduce((acc, number) => acc + number, 0);
const length = numbers.length;
return sum / length;
};
const numbers = [1, 2, 3, 4];
console.log(getAverage(numbers)); // => 2.5
0
0
Хотел бы предложить вариант нахождения среднего арифметического массива с использованием цикла for
:
const arr = [1, 3, 5, 7, 9, 11];
const getAverage = (numbers) => {
let sum = 0; // объявляем переменную, в которой будет храниться сумма всех чисел массива
for (let i = 0; i < numbers.length; i += 1) { // инициализируем цикл
sum += numbers[i]; // на каждой итерации прибавляем к сумме значение текущего элемента массива
}
return sum / numbers.length; // возвращаем среднее арифметическое
};
console.log(getAverage(arr)); // => 6
3
0
Inline версия первого варианта
const getAverage = (numbers) => numbers.reduce((acc, number) => acc + number, 0) / numbers.length
console.log(getAverage([1, 2, 3, 4])) // => 2.5
0
0
Добавьте ваш ответ
Рекомендуемые курсы
26 часов
Старт в любое время
11 часов
Старт в любое время
18 часов
Старт в любое время
Похожие вопросы
В этом посте мы обсудим, как рассчитать среднее значение всех элементов в списке Python.
1. Использование sum()
функция
Предпочтительный и быстрый способ получить сумму последовательности целых чисел с помощью sum()
функция. Затем вы можете рассчитать среднее значение путем деления общей суммы на длину списка. Это показано ниже:
if __name__ == ‘__main__’: ints = [1, 2, 3, 4, 5] avg = sum(ints) / len(ints) print(avg) # 3.0 |
Скачать Выполнить код
Чтобы получить значения с плавающей запятой с повышенной точностью, рассмотрите возможность использования math.fsum()
.
import math if __name__ == ‘__main__’: ints = [1, 2, 3, 4, 5] avg = math.fsum(ints) / len(ints) print(avg) # 3.0 |
Скачать Выполнить код
2. Использование операции уменьшения
Вы также можете вычислить среднее значение с помощью функции сокращения. Это будет переведено в простой код ниже:
from functools import reduce if __name__ == ‘__main__’: ints = [1, 2, 3, 4, 5] avg = reduce(lambda x, y: x + y, ints) / len(ints) print(avg) # 3.0 |
Скачать Выполнить код
3. Использование NumPy
Если вы уже используете NumPy, вы можете использовать numpy.mean()
Функция, которая вычисляет и возвращает среднее арифметическое.
import numpy as np if __name__ == ‘__main__’: ints = [1, 2, 3, 4, 5] avg = np.mean(ints) print(avg) # 3.0 |
4. Использование statistics
модуль
The statistics
Модуль предоставляет несколько функций для расчета математической статистики числовых данных. Он был представлен в версии 3.4, и вы можете использовать mean()
Функция для получения среднего арифметического данных.
from statistics import mean if __name__ == ‘__main__’: ints = [1, 2, 3, 4, 5] avg = mean(ints) print(avg) # 3.0 |
Скачать Выполнить код
Это все, что касается нахождения среднего значения всех элементов в списке в Python.
Спасибо за чтение.
Пожалуйста, используйте наш онлайн-компилятор размещать код в комментариях, используя C, C++, Java, Python, JavaScript, C#, PHP и многие другие популярные языки программирования.
Как мы? Порекомендуйте нас своим друзьям и помогите нам расти. Удачного кодирования 🙂
Большинство задач на обработку массива сводятся к комбинированию следующих алгоритмов:
- Заполнение
- Заполнение случайными числами.
- Использование в формуле заполнения индекса элемента.
- Использование рекуррентного соотношения.
- Анализ
- Задачи подсчета — нахождение суммы или количества элементов таблицы, обладающих заданным свойством.
- Нахождение минимального или максимального среди элементов массива.
- Задачи, в которых требуется найти какие-то характеристики массива.
- Поиск
- Перестановка
- Задачи, в которых требуется поменять местами элементы массива.
- Задачи циклической перестановки.
- Задачи сортировки элементов массива.
- Задачи анализа
- Задачи подсчёта
- Нахождение минимального или максимального среди элементов массива
- Задачи, в которых требуется найти какие-то характеристики массива
- Применение алгоритма задач анализа для решения практических задач
В задачах анализа массив уже задан, и требуется найти какие-то его характеристики. Наиболее типичные базовые задачи анализа — нахождение суммы элементов массива, подсчет количества элементов, обладающих заданным свойством, определение минимального и максимального элементов.
В предлагаемой классификации определение максимума и минимума, относятся к задачам анализа, так как максимальный элемент является характеристикой массива в целом. Поиск здесь ведется по относительному признаку (больше других), и опознать элемент как максимальный можно только просмотрев весь массив.
К основным задачам подсчёта относятся задачи на нахождение суммы, произведения элементов массива, а также, задачи на нахождение количества элементов, удовлетворяющих определенным условиям. При решении данных задач необходимо использовать следующие действия:
Название |
Действие до цикла |
Действие в цикле | Действия после цикла |
сумма | s: = 0; | s: = s + a [ i ] | write (‘s=’,s); |
произведение | p:= 1 ; | p: = p * a [ i ] | write (‘p=’,p); |
количество | k: = 0; | if условие then k: = k + 1 | write (‘k=’,k); |
Задача 1. Составить программу нахождения суммы и произведения всех элементов одномерного массива.(.pas)
Исходные данные: массив x, содержащий n вещественных чисел.
Результат: сумма s и произведение p всех элементов массива.
Метод решения:
– начиная с нулевого значения суммы, добавляем поочередно новый элемент ряда и находим значение искомой суммы;
– начиная с начального, единичного произведения, находим искомое произведение, умножая текущее значение произведения на очередной элемент ряда.
program SPMas; |
Задача 2. Составить программу нахождения количества элементов целочисленного массива с нечетными индексами, запись которых оканчивается на 5. (.pas)
Исходные данные: массив a, содержащий n целых чисел.
Результат: k – количество элементов массива, запись которых оканчивается на 5 и имеющих нечетные индексы.
Метод решения:
– в цикле: вводим элемент массива, если он удовлетворяют условию задачи, то значение переменной k увеличиваем на 1, затем вводим следующий элемент.
– выводим k.
program kol; |
Задача 3. Найти среднее арифметическое всех элементов массива.(.pas)
Исходные данные: массив x, содержащий n вещественных чисел.
Результат: sr – среднее арифметическое всех элементов массива.
Метод решения:
– начиная с нулевого значения суммы sum, добавляем поочередно новый элемент ряда и находим значение суммы всех элементов массива;
– среднее арифметическое sr находим делением sum на n.
program SPMas; |
Нахождение минимального или максимального среди элементов массива.
При решении задач на нахождение максимального или минимального элемента необходимо использовать следующие действия:
Название | Действие до цикла | Цикл | Действия после цикла |
Поиск максимального (минимального) элемента произвольного массива |
|||
максимум | max: = a [ 1 ]; |
for i:=2 to n do |
write (‘max=’,max) ; |
максимум |
n_max:=1; |
for i:=2 to n do if a [ i ] > a[n_max] then n_max:= i; |
write (‘max=’,a [ n_max ]) ; |
минимум | min : = a [ 1 ]; | for i:=2 to n do if a [ i ] < min then min:=a [ i ]; |
write (‘min =’,min) ; |
Поиск максимального (минимального) элемента массива, про значения элементов которого известно, что они принадлежат определенному диапазону [a; b]. |
|||
максимум | max: = a; |
for i:=1 to n do |
write (‘max=’,max) ; |
минимум | min : = b; | for i:=1 to n do if a [ i ] < min then min:=a [ i ]; |
write (‘min =’,min) ; |
Поиск номера максимального элемента произвольного массива | |||
номер максимального |
n_max:=1; | for i:=2 to n do if a [ i ] >a [ n_max] then n_max:= i ; |
write (‘n_max =’,n_max) ; |
Задача 4. Составить программу нахождения максимального элемента произвольного одномерного массива.(.pas)
Исходные данные: массив x, содержащий m вещественных чисел.
Результат: максимальный элемент массива max.
Метод решения:
– в качестве начального значения максимума возьмем значение первого элемента массива;
– начиная со второго, переберем все элементы и проверим, есть ли элемент, который больше, чем этот выбранный максимум. Если такой нашелся – будем считать его максимальным и сравним с остальными.
program maximum; const n = 7; var x: array [1..n] of real; max: real; i: integer; begin for i:=1 to n do read (x[i]); max:=x[1]; for i:=2 to n do if (x [i]>max) then max:= x [ i ]; writeln(‘max = ‘,max); end. |
Задача 5. Составить программу нахождения номера максимального элемента произвольного одномерного массива.(.pas)
Исходные данные: массив a, содержащий n вещественных чисел .
Результат: n_max – номер максимального элемента массива.
Метод решения:
– в программе можно выделить две части: заполнение массива числами (первый цикл for) и непосредственно поиск индекса максимального элемента (второй цикл for);
– изначально делается предположение, что первый элемент массива и есть максимум. Поэтому переменной n_max присваивается значение 1 (т.е. указатель на первый элемент массива), а max[n_max] – непосредственно значение, хранящееся в первой ячейке массива;
– начиная со второго элемента, каждое очередное значение массива сравнивается со значением max[n_max]. В случае, если текущее значение массива больше, чем хранящиеся в n_max, происходит новое присваивание индекса.
program numer_max; |
Вопросы:
Задачи, в которых требуется найти какие-то характеристики массива.
Задача 6. Проверить, что массив упорядочен по возрастанию.(.pas)
Исходные данные: массив a, содержащий n целых чисел .
Результат: сообщение “массив упорядочен ” или сообщение “массив неупорядочен”.
Метод решения:
– введем дополнительную переменную-флажок flag (критерий упорядоченности). Присвоим ей начальное значение, равное нулю.
– посчитаем в каком количестве случаев порядок элементов в паре будет верным. Для этого переберём все соседние пары элементов (их будет n-1). Если в паре элемент с меньшим номером оказался больше, чем элемент с большим номером, то увеличим на единицу переменную-флажок flag.
– после окончания цикла проверим, изменилось ли значение переменной flag. Если оно осталось равным нулю – значит, во всех парах порядок верный и массив упорядочен. Иначе массив неупорядочен.
program z; const n=5; var flag,i: integer; a: array [1..n] of real; begin flag:=0; for i:=1 to n do read(a[i]); for i:=1 to n-1 do if a[i]>a[i+1] then flag:=flag+1; if flag=0 then writeln (‘упорядочен’) else writeln (‘неупорядочен’); end. |
Применение алгоритма задач анализа для решения практических задач
Задачи:
- Пусть известно, что в автопарке, имеется 21 машина марки ТАТРА. Каждый из автомобилей перевез за день определенный объем груза. Определить суммарный объем перевозок грузов за день (.pas).
- Известна среднегодовая зарплата 15 сотрудников одного предприятия. Найти величину наименьшей среднемесячной зарплаты этих сотрудников (.pas).
- Известны результаты экзамена 15 выпускников школы по истории. Определить, сколько выпускников сдали экзамен на 5 (.pas).
- На вход программе подаются сведения о сдаче экзаменов учениками 9-х классов некоторой средней школы. В первой строке сообщается количество учеников N, которое не меньше 10, но не превосходит 100, каждая из следующих N строк имеет следующий формат: <Фамилия> <Имя> <оценки>, где <Фамилия> – строка, состоящая не более чем из 20 символов, <Имя> – строка, состоящая не более чем из 15 символов, <оценки> – через пробел три целых числа, соответствующие оценкам по пятибалльной системе. <Фамилия> и <Имя>, а также <Имя> и <оценки> разделены одним пробелом. Пример входной строки: Иванов Петр 4 5 4. Требуется написать программу на языке Паскаль или Бейсик, которая будет выводить на экран фамилии и имена трех лучших по среднему баллу учеников. Если среди остальных есть ученики, набравшие тот же средний балл, что и один из трех лучших, то следует вывести и их фамилии и имена.(.exe)(.pas)
Вопросы:
-
Дан фрагмент программы, обрабатывающий массив А из 10 элементов:
n := 10;
for i:=1 tо n do A[i] := i;
j := 1;
for i:=1 tо n-1 do
if A[i] < A[i+1] then j := j + 1;
Чему будет равно значение переменной j после выполнения этого алгоритма?
1
2
10
11 - Дан фрагмент программы, обрабатывающий массив А из 10 элементов:
j := 1;
for i:=1tо 10 do
if A[i] = A[j] then j := i;
s := j;
Чему будет равно значение переменной s после выполнения этого алгоритма?
1
10
индексу элемента, равного первому, и имеющему наибольший индекс
индексу элемента, равного последнему, и имеющему наименьший индекс -
В программе описан одномерный целочисленный массив с индексами от 1 до n. Известно, что в массиве есть несколько элементов с максимальным значением. Дан фрагмент программы:
j:=1;
for i:=1 to n do
if A[i] > A[j] then j:= i;
s:=j;
Чему будет равно значение переменной s после выполнения этого фрагмента программы:
значению максимального элемента
количеству элементов в массиве A, имеющих максимальное значение
индексу первого элемента в массиве A, имеющего максимальное значение
индексу последнего элемента в массиве A, имеющего максимальное значение - Значения двух массивов A и B с индексами от 1 до 100 задаются при помощи следующего фрагмента программы:
for i:=1 to n do A[i]:=i*i;
for i:=1 to n do B[i]:=A[i]-100;
Сколько положительных значений будет в массиве B?
0
10
90
91
;
К началу страницы
№ |
Фрагмент программы |
Блок – схема |
1 |
Вычисление суммы всех элементов массива |
|
2 |
Вычисление среднего арифметического чётных элементов массива |
|
3 |
Найти произведение всех элементов массива |
|
4 |
Количество четных элементов массива |
|
5 |
Удвоить все положительные элементы массива, и поменять знак у остальных |
|
6 |
Перестановка всех элементов массива в обратном порядке |
|
7 |
Перестановка соседних элементов массива |
|
8 |
Обмен половин массива |
|
9 |
Проверить, есть ли в массиве четные числа |
|
10 |
Проверить, что массив упорядочен строго по возрастанию |
|
11 |
Поиск максимального элемента массива (границы изменения значений элементов массива неизвестны) |
|
12 |
Значения элементов массива принадлежат промежутку от -500 до 500. Найти максимальный элемент массива. |
|
13 |
Поиск количества элементов произвольного массива равных максимальному |
|
14 |
Найти номер максимального элемента массива, если он единственный, или количество максимальных элементов, если их несколько. |
|
15 | Поиск второго по величине максимального элемента массива max:=a[1]; max2:=a[2]; if max<max2 then begin max:=a[2]; max2:=a[1]; end; for i:=3 to n do if a[i]>max then begin max2:=max; max:=a[i]; end else if a[i]>max2 then max2:=a[i]; |
|
16 |
Поиск номера максимального элемента |
|
17 |
Значения элементов массива принадлежат диапазону от – 500 до 500. найти максимальный отрицательный элемент массива. Гарантируется, что отрицательные элементы есть. |
|
18 |
Номера двух элементов массива наименее отличающихся друг от друга |
|
19 |
Номера двух последовательных элементов массива наименее отличающихся друг от друга |
- Тест
- Задачи
Задача 1 (..pas) Дан целочисленный массив из 30 элементов. Элементы могут принимать значения от 0 до 100 – баллы, полученные на ЕГЭ. Опишите на русском языке или на одном из языков программирования алгоритм, который подсчитывает и выводит средний балл учащихся, сдавших экзамен (получивших оценку более 20 баллов). Гарантируется, что хотя бы один ученик в классе успешно сдал экзамен. Исходные данные объявлены так, как показано ниже. Использовать другие переменные запрещается.
const N = 30;
var A: array[1..N] of integer;
i, x, y: integer;
s: real;
begin
for i:=1 to N do readln(A[i]);
…
end.
Задача 2 (..pas) Дан целочисленный массив из 30 элементов. Элементы массива могут принимать целые значения от 0 до 100 – баллы учащихся выпускного класса за итоговый тест по информатике. Для получения положительной оценки за тест требовалось набрать не менее 20 баллов. Опишите на русском языке или на одном из языков программирования алгоритм, который находит и выводит минимальный балл среди учащихся, получивших за тест положительную оценку. Известно, что в классе хотя бы один учащийся получил за тест положительную оценку. Исходные данные объявлены так, как показано ниже. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать часть из них.
const N=30;
var a: array [1..N] of integer;
i, j, min: integer;
begin
for i:=1 to N do readln(a[i]);
…end.
Задача
3 (.pas) Дан массив, состоящий из 30 вещественных чисел. Вычислить сумму всех элементов. Массив вводится с клавиатуры.
а) Наберите программу или воспользуйтеть файлом .pas, заменив многоточие на необходимые команды:
Program z;
Const n=5;
type mas=array[1..n] of real;
var a: mas;
s: real;
i: integer;
begin
for i:=…….. to ……. do
begin
writeln (‘введите элемент массива’);
………………….;
S:=S+…….. ;
end;
writeln (‘ Сумма равна’,…….);
End.
б) запустите данную программу и посмотрите результат её работы.
Задача
4. Дан массив целых чисел.
а) каждый положительный элемент, заменить на его квадрат;
б) выяснить, верно ли, что максимальный элемент больше среднего арифметического на 5.
Задача
5 (.pas) Дан целочисленный массив из 20 элементов. Элементы массива могут принимать целые значения от 0 до 1000. Опишите на русском языке или на одном из языков программирования алгоритм, позволяющий найти и вывести минимальное значение среди элементов массива, которые имеют чётное значение и не делятся на три. Гарантируется, что в исходном массиве есть хотя бы один элемент, значение которого чётно и не кратно трем. Исходные данные объявлены так, как показано ниже. Запрещается использовать переменные, не описанные ниже, но использовать все описанные переменные не обязательно.
const
N = 20;
var
a: array [1..N] of integer;
i, j, min: integer;
begin
for i := 1 to N do
readln(a[i]);
……….
end.