Как найти среднее значение в массиве паскаль

0 / 0 / 0

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

Сообщений: 4

1

Найти среднее значение элементов массива

18.03.2010, 09:56. Показов 14881. Ответов 7


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

парни задали ДЗ помогите мне(
всего 4 задачки (
1 – найти среднее значение элементов массива размером n. Заменить данній массив, отнимаючи от каждого элемента среднее значение

2- В массиве A[1:n] найти первый элемент, больший за данное число m

3 – дан массив размером 10. Сделать два массива таким образом чтоб в первом содержались элементы массива с парными индексами а во втором – с непарными

4 – Просуммировать элементы столпцов даной матрицы 4 x 3. результат получить в одномерном массиве размером 3.

Помогите пожалуйста!



0



Inadequate

Retired

7726 / 2558 / 671

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

Сообщений: 5,100

18.03.2010, 10:16

2

найти среднее значение элементов массива размером n. Заменить данній массив, отнимаючи от каждого элемента среднее значение

Pascal
1
2
3
4
5
6
7
8
{находим среднее арифметиеское}
sum := 0;
for i := 1 to N do
  sum := sum + a[i];
sr := sum / N;
{отнимаем от всех элементов его значение}
for i := 1 to N do
  a[i] := a[i] - sr;

Добавлено через 1 минуту

В массиве A[1:n] найти первый элемент, больший за данное число m

Pascal
1
2
3
4
5
6
for i := 1 to N do
  if a[i] > m then
  begin
    WriteLn(a[i]);
    break;
  end;

Добавлено через 8 минут

дан массив размером 10. Сделать два массива таким образом чтоб в первом содержались элементы массива с парными индексами а во втором – с непарными

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
const
  N = 10;
var
  a,b,c: array [1..N] of integer;
  Bmax,Cmax,i: integer;
begin
  Bmax := 0;
  Cmax := 0;
  WriteLn('Array A:');
  for i := 1 to N do
  begin
    a[i] := Random(10) - 5;
    if odd(i) then
    begin
      Inc(Cmax);
      c[Cmax] := a[i];
    end
    else
    begin
      Inc(Bmax);
      b[Bmax] := a[i];
    end;
    Write(a[i], ' ');
  end;
  WriteLn;
  WriteLn('Array B:');
  for i := 1 to Bmax do
    Write(b[i], ' ');
  WriteLn;
  WriteLn('Array C:');
  for i := 1 to Cmax do
    Write(c[i], ' ');
  ReadLn;
end.

Добавлено через 4 минуты

Просуммировать элементы столпцов даной матрицы 4 x 3. результат получить в одномерном массиве размером 3

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
uses
  Crt;
const
  N = 4;{êîëè÷åñòâî ñòðîê}
  M = 4;{êîëè÷åñòâî ñòîëáöîâ}
var
  a: array [1..N, 1..M] of integer;
  b: array [1..M] of integer;
  i,j,sum:integer;
begin
  ClrScr;
  WriteLn('Èñõîäíàÿ ìàòðèöà:');
  for i := 1 to N do
  begin
    for j := 1 to M do
    begin
      a[i,j] := random(8) - 4;
      Write(a[i,j]:2, ' ');
    end;
    WriteLn;
  end;
  WriteLn('Array B:');
  for j := 1 to M do
  begin
    sum := 0;
    for i := 1 to N do
      Inc(sum, a[i,j]);
    b[j] := sum;
    Write(sum:2, ' ');
  end;
  ReadLn;
end.



1



0 / 0 / 0

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

Сообщений: 4

18.03.2010, 10:32

 [ТС]

3

Спасибки, так оперативно! только что-то не пойму( ввела все в 3 прогр на экран выводит

arr a – 5 -5 3 -3 -3 1 -2 -4 -2 -1
arr b -5 -3 1 -4 -1
arr c -5 3 -3 -2 -2

ничего не поняла(



0



Retired

7726 / 2558 / 671

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

Сообщений: 5,100

18.03.2010, 10:36

4

Marin4ik, а что такое парный и непарный индекс ? (Я подумал что это “новое” название четным/нечетным)



0



0 / 0 / 0

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

Сообщений: 4

18.03.2010, 10:42

 [ТС]

5

Цитата
Сообщение от Inadequate
Посмотреть сообщение

Marin4ik, а что такое парный и непарный индекс ? (Я подумал что это “новое” название четным/нечетным)

наверное.. я перевела с укр.. дак оно и должно так выводить..то не пойму…



0



Retired

7726 / 2558 / 671

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

Сообщений: 5,100

18.03.2010, 10:48

6

Marin4ik, если всё так как я подумал, то выводит всё совершенно верно. Смотри сама:

Array A:
0 -5 1 0 -2 0 0 1 0 -1
Array B:
-5 0 0 1 -1
Array C:
0 1 -2 0 0



0



0 / 0 / 0

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

Сообщений: 4

18.03.2010, 10:51

 [ТС]

7

Цитата
Сообщение от Inadequate
Посмотреть сообщение

Marin4ik, если всё так как я подумал, то выводит всё совершенно верно. Смотри сама:

а у меня…

arr a – 5 -5 3 -3 -3 1 -2 -4 -2 -1
arr b -5 -3 1 -4 -1
arr c -5 3 -3 -2 -2

((((((((((((((((



0



Retired

7726 / 2558 / 671

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

Сообщений: 5,100

18.03.2010, 10:56

8

Marin4ik, ну у тебя тоже всё верно. Чтобы были разные числа, добавь Randomize.



0



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

Функция, вычисляющая среднее арифметическое элементов массива

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

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

Среднее арифметическое определяется как сумма элементов, деленная на их количество.

Параметром функции является целочисленный массив, возвращает она вещественное число.

В теле функции элементы перебираются в цикле, каждый добавляется к переменной, в которой накапливается сумма. После завершения работы цикла полученная сумма делится на количество элементов в массиве. Полученное значение возвращается из функции в основную ветку программы. Здесь оно может быть присвоено какой-либо переменной или сразу выведено на экран.

Pascal

паскаль среднее арифметическое чисел


const N = 10;
type
arrtype = array[1..N] of integer;
var
arr: arrtype;
i: byte;
avrg: real;

procedure fill_array(var a: arrtype);
begin
for i:=1 to N do a[i]:=random(50)+1;
end;

function average(a:arrtype):real;
var sum:integer;
begin
sum := 0;
for i:=1 to N do sum:=sum+a[i];
average := sum / n;
end;

begin
randomize;
fill_array(arr);
for i:=1 to N do write(arr[i]:4);
writeln;
avrg := average(arr);
writeln(avrg:3:2);
end.



3 31 24 25 42 5 26 39 27 43
26.50

В данном случае, кроме функции, определяющей среднее арифметическое, используется процедура заполнения массива случайными числами.

Язык Си


#include < stdio.h>
#define N 10
float average(int arr[]);

main() {
int a[N];
int i, min1, min2, buff;
srand(time(NULL));
for (i=0; i< N; i++) {
a[i] = rand() % 100;
printf("%3d", a[i]);
}
printf("n %.2fn", average(a));
}

float average(int arr[]) {
int sum, i;
sum = 0;
for (i=0; i< N; i++) sum += arr[i];
return sum/N;
}



82 35 2 32 56 55 33 41 99 45
48.00

Python

среднее арифметическое python


from random import random
N = 10

def average(a):
s = 0
for i in range(N):
s += a[i]
return s/N

arr = [0] * N
for i in range(N):
arr[i] = int(random() * 100)

b = average(arr)
print(arr)
print(b)



[30, 63, 67, 29, 29, 54, 30, 29, 41, 0]
37.2

В языке Python есть встроенная функция sum(), которая возвращает сумму элементов переданного ей списка. Поэтому код

s = 0
for i in range(N):
s += a[i]
можно заменить на

s = sum(a)

Среднее
арифметическое (обозначим как 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) заменить нулём каждый
четвёртый элемент массива и т.п.

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

  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
PROGRAM ex2p39;
var
   K,B:array[1..256] of real;
   i,n,nmax,nmin:integer;
   max,min,x:real;
BEGIN
  ClrScr;
  writeln('vvedite razmernost massiva: ');
  read(i);
    writeln('Massiv K[N] : ');
    for n :=1 to i do
      begin
        K[N] :=sin(n)*n; {заполняем массив K[N]}
    B[N] :=K[N]; {формируем массив B[N] с которым будем работать}
        write (K[n]:0:2, ' ');
      end;
  min :=B[1]; {Одновременный поиск МИН и МАКС}
  max :=B[1];
    for n :=1 to i do
      begin
        if B[n]>max
          then begin
            max :=B[n];
            nmax :=n; {номер МАКС}
               end
          else if B[n]<min
            then begin
              min :=B[n];
              nmin :=n; {номер МИН}
                 end;
      end;
  x :=min; {Используем дополнительную ячейку для перестановки элементов массива}
  B[nmin] :=max;
  B[nmax] :=x;
  writeln;
  writeln('Massiv B[N] : ');
    for n :=1 to i do write(B[n]:0:2, ' ');
  readkey;
END.

Составить программу для вычисления среднего арифметического числа одномерного массива.

Для решения данной задачи, первоначально необходимо сложить все элементы массива и разделить получившуюся сумму на количество элементов (в данном примере константа n).

В примере количество элементов для массива задается константой n, т.е. для увеличения или уменьшения размерности массива необходимо сменить значение данной константы до выполнения программы. У данного метода решения есть один недостаток: не возможно задать размерность массива в процессе выполнения программы.

Uses Crt;
Const n=10;
Var
	a:Array[1..n] of Integer;
	s: Real;
 	sum,n,i: Integer;
Begin
	ClrScr;
	For i:=1 To n Do
	Begin
		Write('a[',i,']=');
		Readln(a[i]);
    End;
	sum:=0;
	For i:=1 To n Do
		sum:=sum+a[i];
	s:=sum/n;
	Writeln('Ср.ариф.массива = ',s);
	Repeat Until KeyPressed
End.

Внесено изменение для для https://www.onlinegdb.com/online_pascal_compiler

вместо sum,n,i: Integer; объявление sum,i: Integer;

Uses Crt;
Const n=10;
Var
	a:Array[1..n] of Integer;
	s: Real;
 	sum,i: Integer;
 
Begin
	ClrScr;
	For i:=1 To n Do
	Begin
		Write('a[',i,']=');
		Readln(a[i]);
    End;
	sum:=0;
	For i:=1 To n Do
		sum:=sum+a[i];
	s:=sum/n;
	Writeln('Ср.ариф.массива = ',s);
	Repeat Until KeyPressed
End.

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