Перейти к содержанию
Среднее арифметическое положительных элементов массива
Просмотров 7.2к. Обновлено 17 сентября 2021
Найти среднее арифметическое положительных элементов линейного массива.
Данная задача имеет смысл, если массив заполнен не только положительными числами, но также содержит отрицательные числа и/или возможно нули.
Для заполнения массива можно воспользоваться генератором псевдослучайных чисел. Допустим, надо сгенерировать числа в диапазоне от -5 до 4 включительно. Всего значений 10, смещение на -5. Таким образом, с помощью стандартной функции генерируем числа от 0 до 10 и вычитаем из них 5.
Среднее арифметической находится как отношение суммы чисел к количеству этих чисел. Поскольку надо найти среднее арифметическое только положительных чисел, то, перебирая массив, нам надо определять положительные числа, добавлять их к общей сумме, а также считать их количество. Для этого потребуется две переменные (например, sum и qty), которым до цикла следует присвоить значение 0.
Осуществлять проверку с помощью условного оператора if можно как в отдельном цикле перебора массива, так и в цикле его заполнения. Если очередной элемент массива больше нуля, то следует его значение добавить к переменной sum, а значение переменной qty увеличить на 1.
После того как все элементы массива проверены, надо найденную сумму положительных чисел разделить на их количество. Тем самым будет найдено среднее арифметическое.
Pascal
Язык Си
Python
КуМир
Basic-256
3 / 3 / 0 Регистрация: 05.04.2017 Сообщений: 138 |
|
1 |
|
Найти среднее арифметическое элементов массива.11.04.2017, 17:40. Показов 74311. Ответов 1
дан массив в котором N чисел. Найти среднее арифметическое элементов массива.
0 |
VladimirD 80 / 80 / 78 Регистрация: 30.12.2015 Сообщений: 256 |
||||
11.04.2017, 17:46 |
2 |
|||
Решение
1 |
Одномерные массивы (последовательности).
- Задачи заполнения
- Задачи анализа
- Задачи поиска
- Задачи перестановки
A: 3,-4,0,3,-5,10,0
A[1]=3, A[3]=0, A[7]=0
I — номер элемента, A[I] — элемент массива, стоящий на I-ом месте
-
1.Сформировать и вывести на экран последовательность из n элементов, заданных датчиком случайных чисел на интервале [-23, 34].
Program posled;
Var a: array[1..100] of integer;
i, n: integer;
Begin
Write (‘Сколько элементов? ’); Readln (n);
For i=1 to n do
begin
a[i]:= Random(58)-23;
writeln (a[i],’ ‘);
end;
End.
2. Найти произведение элементов одномерного массива, состоящего из n элементов. Элементы вводятся с клавиатуры.
Program proisveden;
Var a: array[1..100] of integer;
i, n, p: integer;
Begin
Write (‘Сколько элементов? ’); Readln (n);
p:=1;
For i:=1 to n do
begin
write (‘введите число’); readln (a[i]);
p:=p*a[i];
end;
writeln(‘произведение элементов равно: ‘,p);
End.
3. Найти сумму элементов одномерного массива. Размер произвольный. Элементы вводятся с клавиатуры.
Program summa;
Var a: array[1..100] of real;
i, n: integer;
s: real;
Begin
Write (‘n=’); Readln (n);
s:=0;
For i:=1 to n do
begin
write (‘введите число’); readln (a[i]);
s:=s+a[i];
end;
writeln(‘сумма элементов равна ‘,s);
End.
4. Задан массив А, состоящий из n чисел. Найти среднее арифметическое его элементов. Элементы вводятся с клавиатуры.
Program srednee;
Var a: array[1..100] of real;
i, n: integer;
s,sred: real;
Begin
Write (‘n=’); Readln (n);
s:=0;
For i:=1 to n do
begin
write (‘введите число’); readln (a[i]);
s:=s+a[i];
end;
sred:=s/n;
writeln(‘среднее арифметическое элементов: ‘,s);
End.
5. Найти сумму элементов массива с четными номерами, содержащего N элементов. Элементы вводятся с клавиатуры.
Program sumshet;
Var a: array[1..100] of real;
i, n: integer;
s,sred: real;
Begin
Write (‘n=’); Readln (n);
s:=0;
For i:=1 to n do
begin
write (‘введите число’); readln (a[i]);
if i mod 2 = 0 then s:=s+a[i];
end;
writeln(‘сумма элементов с четными номерами: ‘,s);
End.
6. Сформировать и вывести на экран массив, элементы которого заданы датчиком случайных чисел на интервале [-19, 26] (размер произвольный). Найти произведение элементов с нечетными номерами.
Program proisvednechet;
Var a: array[1..100] of integer;
i, n, p: integer;
Begin
Write (‘Сколько элементов? ’); Readln (n);
P:=1;
For i=1 to n do
begin
a[i]:= Random(46)-19;
writeln (a[i],’ ‘);
if i mod 2 <> 0 then P=P*a[i];
end;
Writeln(‘Произведение элементов с нечетными номерами:’, P);
End.
7. Сформировать и вывести на экран массив, элементы которого заданы датчиком случайных чисел на интервале [-56, 47] (размер произвольный). Найти произведение элементов с четными номерами, которые превосходят некоторое число t.
Program proisvedchetbolt;
Var a: array[1..100] of integer;
i, n, p, t: integer;
Begin
Write (‘Сколько элементов? ’); Readln (n);
P:=1;
For i=1 to n do
begin
a[i]:= Random(104)-56; writeln (a[i],’ ‘);
if (i mod 2 = 0) and (a[i]>t) then P=P*a[i];
end;
Writeln(‘Произведение элементов с четными номерами, превосходящие число t:’, P);
End.
8. Найти наименьший элемент одномерного массива, состоящего из n элементов. Элементы вводятся с клавиатуры.
Program minim;
Var a: array[1..100] of real;
i, n: integer;
min: real;
Begin
Write (‘n=’); Readln (n);
For i:=1 to n do
begin
write(‘a[‘,i,’]=’); readln (a[i]);
end;
min:=a[1];
For i:=2 to n do
If a[i]< min then min:=a[i];
Writeln(‘наименьшее число: ‘,min);
End.
9. Найти номер наименьшего элемента в массиве, заданного датчиком случайных чисел на интервале [-20, 25]. Размер произвольный.
Program numberminim;
Var a: array[1..100] of integer;
i, n, num, min: integer;
Begin
Write (‘n=’); Readln (n);
For i:=1 to n do
begin
a[i]:= Random(46)-20;
writeln (a[i]);
end;
min:=a[1];
num:=1;
For i:=2 to n do
If a[i]< min then
begin
min:=a[i];
num:=i;
end;
Writeln(‘ номер наименьшего элемента: ‘,num);
End.
10. В заданном одномерном массиве, состоящем из n целых чисел, подсчитать количество нулей.
Program kolv0;
Var a: array[1..100] of integer;
i, n, k: integer;
Begin
Write (‘n=’); Readln (n);
For i:=1 to n do
begin
Write(‘a[‘,i,’]=’); readln (a[i]);
if a[i]=0 then k:=k+1;
end;
Writeln(‘количество 0 равно ’, k);
end.
11. В заданном одномерном массиве, состоящем из n целых чисел, подсчитать количество четных элементов.
Program kolvсchet;
Var a: array[1..100] of integer;
i, n, k: integer;
Begin
Write (‘n=’); Readln (n);
For i:=1 to n do
begin
Write(‘a[‘,i,’]=’); readln (a[i]);
if a[i] mod 2=0 then k:=k+1;
end;
Writeln(‘количество четных элементов: ’, k);
end.
12. Найдите среднее арифметическое элементов массива, состоящего из 10 чисел, которые превышают по величине число С. Элементы вводятся с клавиатуры.
Program sredarifmet;
Var a: array[1..10] of real;
i, k: integer;
C, S, sred: real;
Begin
For i:=1 to 10 do
begin
write(‘a[‘,i,’]=’); readln (a[i]);
end;
write(‘введите С: ‘); readln (C );
For i:=1 to 10 do
begin
If a[i]>C then
begin S=S+a[i]; K=K+1; end;
end;
sred=S/k;
Writeln(‘среднее арифметическое чисел, превосходящих ‘,C,’ равно ‘,sred);
End.
13. Найти произведение элементов целочисленного одномерного массива с четными номерами, состоящего из n элементов. Элементы вводятся с клавиатуры.
Program proizved_chet;
Var a: array [1..100] of integer;
i, n, p: integer;
Begin
p:=1;
write (‘n=’); readln (n);
for i:=1 to n do
begin
write (‘a[‘,i,’]=’); readln (a[i]);
if i mod 2=0 then p:=p*a[i];
end;
Writeln (‘произведение элементов массива с четными номерами равно ‘,p);
End.
14. В заданном одномерном массиве поменять местами соседние элементы.
Var
n, i, c : integer;
a : array [1..1000] of integer;
begin
read (n);
for i := 1 to n do read (a[i]);
for i := 1 to n div 2 do
begin
c := a[i*2];
a[i*2] := a[i*2-1];
a[i*2-1] := c;
end;
for i := 1 to n do
write (a[i], ‘ ‘);
end.
15. Массив А вводится с клавиатуры. Сформировать новый массив В, состоящий из четных элементов массива А. Элементы вводятся с клавиатуры. Размер n.
Program newmasiv;
Var a: array[1..100] of integer;
b: array[1..100] of integer;
n, i, k: integer;
Begin
kol:=0; k:=0;
write (‘n=’); readln (n);
For i:=1 to n do
begin
write(‘a[‘,i,’]=’); readln (a[i]);
if a[i] mod 2=0 then
begin
k:=k+1; b[k]:=a[i]; kol:=kol+1;
end;
if kol=0 then writeln(‘четных элементов нет’) else
for k:=1 to kol do write(‘b[‘,k,’]=’,b[k]);
end;
Условие задачи : Задан массив А, состоящий из n чисел. Найти среднее арифметическое его элементов. Элементы вводятся с клавиатуры.
Сложность : легкая.
Данную задачу мы будем решать на основе этой (ссылка), но там мы искали просто сумму, здесь же нам надо в добавок найти среднее арифметическое всех этих чисел :
Информация
Среднее арифметическое — сумма всех чисел деленное на кол-во чисел
Начнем решать задачу.
Первое что мы сделаем мы создадим свой тип данных как и зачем читайте (тут) :
type
massiv =
array
[
1..1000
]
of
integer
;
Дальше уже объявим переменные которые нам понадобятся :
var
i,n,summa :
integer
;
srednee :
real
;
A : massiv;
Для чего они нужны :
i — для цикла, когда мы будем заполнять массив
n — кол-во элементов
summa — сумма элементов массива
…дальше понятно без слов ))
Теперь просим пользователя ввести кол-во элементов , а сумме присваиваем 0, т.к. для корректной работы с переменной нам нужно присвоить ей какое-то значение.
write
(
'Введите кол-во элементов : '
); readln(n);
summa :=
0
;
// начальное значение
Дальше делаем цикл в нем мы просим пользователя ввести число и сразу прибавляем к текущей сумме :
for
i:=
1
to
n
do
begin
write
(
'Введите '
,i,
' элемент: '
); readln(A[i]);
summa := summa + A[i];
end
;
Ну и всё, осталось только подсчитать среднее арифметическое, т.е. мы сумму делим на количество элементов (n)
Весь код программы :
uses
crt;
type
massiv =
array
[
1..1000
]
of
integer
;
var
i,n,summa :
integer
;
srednee :
real
;
A : massiv;
begin
clrscr;
write
(
'Введите кол-во элементов : '
);readln(n);
summa :=
0
;
for
i:=
1
to
n
do
begin
write
(
'Введите '
,i,
' элемент : '
); readln(A[i]);
summa := summa + A[i];
end
;
srednee := summa / n;
writeln
(
'Среднее арифметическое '
, srednee:
3
:
2
);
// округляем
readln;
end
.
Вот результат :
Предыдущая
ПрограммированиеЗадачи по Pascal. Сумма четных элементов массива.
Следующая
ПрограммированиеЗадачи по Pascal. Сумма элементов массива.
Среднее
арифметическое (обозначим как 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) заменить нулём каждый
четвёртый элемент массива и т.п.
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
- #
- #
- #
- #
- #
- #
- #
- #
- #
- #
- #