Как найти среднее значение в pascal

0 / 0 / 0

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

Сообщений: 4

1

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

18.03.2010, 09:56. Показов 14923. Ответов 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



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

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

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

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

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

На занятии будет объяснен алгоритм работы с функциями на Паскале, рассмотрены стандартные функции. Будут разобраны примеры использования функций с параметрами и без параметров.

Содержание:

  • Стандартные функции языка Pascal
    • Арифметические функции (основные)
    • Функции преобразования типов
  • Пользовательские функции Pascal
    • Самостоятельная работа

Арифметические функции (основные)

Функция Назначение Тип результата
abs (x) абсолютное значение аргумента совпадает с типом аргумента
sqr (x) квадрат аргумента совпадает с типом аргумента
sqrt (x) квадратный корень аргумента вещественный
cos (x) косинус аргумента вещественный
sin (x) синус аргумента вещественный
arctan (x) арктангенс аргумента вещественный
exp (x) ex вещественный
ln (x) натуральный логарифм вещественный
int (x) целая часть числа вещественный
frac (x) дробная часть числа вещественный

Функции преобразования типов

round (x) — округляет вещественное число до ближайшего целого.
trunc (x) — выдает целую часть вещественного числа, отбрасывая дробную.

Пользовательские функции Pascal

Функция в Паскале — это подпрограмма, которая в отличие от процедуры всегда возвращает какое-либо значение. Для этого в теле функции её имени присваивается вычисленное значение — результат, который она возвращает.

  • Функция – это подпрограмма, результатом работы которой является определенное значение.
  • Функции используются для:
    • выполнения одинаковых расчетов в различных местах программы;
    • для создания общедоступных библиотек функций.
  • Синтаксис:
  • заголовок начинается служебным словом function
  • 1

  • описание формальных параметров (тех, значения которых передаются из основной программы в функцию):
  • формальные параметры в паскале

  • параметры-переменные — параметры, значения которых становятся доступны и в основной программе (возвращаются в программу)
  • параметры-переменные в паскале

  • тип возвращаемого функцией результата описывается в конце заголовка функции через двоеточие:
  • тип функции

  • Вызывается функция в теле основной программы, только если ее имя фигурирует в каком-либо выражении. В отличие от процедуры, которая вызывается отдельно.
  • Внутри функции можно объявлять и использовать локальные переменные:
  • локальные переменные в функции

  • значение, которое является результатом, записывается в переменную, имя которой совпадает с названием функции; объявлять ее НЕ НАДО:
  • результат функции

Рассмотрим синтаксис:

var;{объявление глобальных переменных}
 
function название (параметры): тип результата;
var; {объявление локальных переменных}
begin{тело функции}
название:=результат; {результат вычислений всегда присваивается функции}
end;
 
begin{тело основной программы}
end.

Пример: написать функцию, которая вычисляет наибольшее из заданных двух значений

Решение:

пример функции в паскале

Вызов функции:
вызов функции в паскале


PascalABC.NET:

Правила описания функции:

1. Мы должны написать тип значения, которое возвращает функция.
2. Переменная Result хранит результат функции.

function f(x: real): real;
begin
  Result := x * x + 1;
end;

Вызов функции стоит в выражении:

// основная программа
begin
 var x := 5;
 var r := Sqrt(x) + f(x);
end.

Задача function 0. Написать функцию, которая вычисляет наибольшее из заданных трех значений. Функция с тремя параметрами.

✍ Пример результата:

Введите три числа:
4 1 6
наибольшее = 6

Пример: Написать функцию на Паскале, которая складывает два любых числа

✍ Пример результата:

первое число:
2
второе число:
5
сумма = 7

Функция суммы двух чисел на паскале

✍ Решение:

1
2
3
4
5
6
7
8
9
10
11
12
var x,y:integer;
function f(a,b:integer):integer;
begin
  f:= a+b;
end;
begin
 writeln('первое число:');
 readln(x);
 writeln('второе число:');
 readln(y);
 writeln('сумма= ',f(x,y));
end.

В рассмотренном примере использования функции в Паскале: функция f имеет два целочисленных параметра — a и b. Через двоеточие в заголовке функции (строка 2) указано, что значение, вычисляемое функцией, будет тоже целочисленным. В теле функции вычисляемая сумма присваивается имени функции. А в основной программе вызов функции осуществляется в качестве параметра оператора writeln.

Таким образом, главное отличие функции от процедуры — это то, что функция производит какие-либо вычисления и выдает в программу результат в виде значения, в то время как процедура чаще всего выполняет какие-либо действия с результатом, например, выводит его на экран (функция этого делать не может).

Задача function 1. При помощи функции найти среднее арифметическое двух чисел (функция с двумя параметрами).

✍ Пример результата:

Введите два числа:
4 7
среднее арифметическое = 5,5

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

Показать решение:

Pascal PascalABC.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
var x:integer;
function fact(a:integer):integer;
var i: integer;
begin
  if a<=1 then begin 
        fact:=1;exit;
  end;
  result:=2;
  for i:=3 to a do
     result:=result*i;
  fact:=result;
end;
begin
 writeln('число:');
 readln(x);
 writeln(fact(x));
end.
1
2
3
4
5
6
7
8
9
10
function Fact(n: integer): integer;
begin
  Result := 1;
  for var i:=1 to n do
    Result *= i
end;
begin
 var x:= readInteger('число:');
 println(x,'! = ',fact(x));
end.

В рассмотренном примере функция имеет один параметр — a. Вычисляемое функцией значение имеет целочисленный тип, это указывается в заголовке функции (строка 2). В теле функции в цикле for вычисляется факториал числа. Результат вычисления присваивается имени функции (строка 9). В теле программы для вывода результата функции она вызывается в операторе writeln (строка 14), который и выводит результат на экран.


PascalABC.NET:

Короткое определение функции:

function Sq(x: real) := x * x + 1;
 
begin
  var x := 10;
  var r := Sq(x) + Sq(2)
end.

Короткая запись

Если тело функции состоит только из одного оператора, PascalABC.NET позволяет использовать при описании сокращенный синтаксис, без ключевых слов begin и end:

1
2
3
4
5
6
##
function SumXY(x,y: real) := x + y;
// основная программа
begin
  Print (SumXY(9,2)); //11
end;

Задача function 2. Составить функцию, которая определяет сумму всех чисел от 1 до N и привести пример ее использования. N — параметр функции.

Пример:

Введите число:
100
сумма = 5050

Задача function 3. Составить функцию, которая определяет, сколько зерен попросил положить на N-ую клетку изобретатель шахмат (на 1-ую – 1 зерно, на 2-ую – 2 зерна (в два раза больше предыдущего результата), на 3-ю – 4 зерна, на 4-ю – 8 зерен…). N — параметр функции.

Пример:

Введите номер клетки:
28
На 28-ой клетке 134217728 зерен.

Задача function 4. Описать функцию IsDigit(A), которая возвращает истину, если целое число A представляет цифру (то есть A лежит в диапазоне 0–9). В основной программе вывести значение этой функции для N (N ≥ 0) данных чисел.

  
Пример:

Введите N:
3
Введите число:
2 >>> true
Введите число:
34 >>> false
Введите число:
4 >>> true

Задача function 5. Вычисление степени числа с помощью функции на языке Паскаль.

 
Пример:

Введите число:
3
Введите степень числа:
2
Результат 3^2 = 9

Задача function 6. Описать функцию Calc(A, B, Operation) вещественного типа, выполняющую над ненулевыми вещественными числами A и B одну из арифметических операций и возвращающую ее результат. Вид операции определяется целым параметром Operation: 1 — вычитание, 2 — умножение, 3 — деление, остальные значения — сложение. С помощью Calc выполнить для данных A и B операции, определяемые данными целыми N1, N2, N3.

  
Пример:

Введите два числа:
5  7
Введите номер операции (1 — вычитание, 2 — умножение, 3 — деление, остальные значения — сложение):
2
Результат 5*7 = 35

* Из задачника М. Э. Абрамян (Proc22)

Самостоятельная работа

1 вариант: Описать функцию CircleS(R) вещественного типа, находящую площадь круга радиуса R (R — вещественное). С помощью этой функции найти площади трех кругов с данными радиусами. Площадь круга радиуса R вычисляется по формуле S=π∗R2. В качестве значения Пи использовать 3.14.

* Из задачника М. Э. Абрамян (Proc18)

Пример:

Введите радиус:
5.2
Площадь круга = 16,328‬
___
Введите радиус:
6.3
Площадь круга = 19,782‬‬
___
Введите радиус:
7.1
Площадь круга = 22,294

2 вариант: Описать функцию TriangleP(a, h), находящую периметр равнобедренного треугольника по его основанию a и высоте h, проведенной к основанию (a и h — вещественные). С помощью этой функции найти периметры трех треугольников, для которых даны основания и высоты (периметр = сумме длин всех сторон). Для нахождения боковой стороны b треугольника использовать теорему Пифагора: b2=(a/2)2+h2.

* Из задачника М. Э. Абрамян (Proc20)

Пример:

Введите основание треугольника:
6
Введите высоту треугольника:
5
Периметр треугольника = 17,83095 
___
Введите основание треугольника:
...
Введите высоту треугольника:
...
Периметр треугольника = ... 
___
Введите основание треугольника:
...
Введите высоту треугольника:
...
Периметр треугольника = ... 

Потренируйтесь в решении задач по теме, щелкнув по пиктограмме:

проверь себя

Понравилась статья? Поделить с друзьями:
  • Как найти любительскую хоккейную команду
  • Как найти понимание в общении с
  • Как составить схемы счетов на примере
  • Ошибка 45h сумма всех типов оплаты меньше итога чека как исправить
  • Как найти nfs в самсунге