0 / 0 / 0 Регистрация: 18.03.2010 Сообщений: 4 |
|
1 |
|
Найти среднее значение элементов массива18.03.2010, 09:56. Показов 14923. Ответов 7
парни задали ДЗ помогите мне( 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. Заменить данній массив, отнимаючи от каждого элемента среднее значение
Добавлено через 1 минуту В массиве A[1:n] найти первый элемент, больший за данное число m
Добавлено через 8 минут дан массив размером 10. Сделать два массива таким образом чтоб в первом содержались элементы массива с парными индексами а во втором — с непарными
Добавлено через 4 минуты Просуммировать элементы столпцов даной матрицы 4 x 3. результат получить в одномерном массиве размером 3
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 ничего не поняла(
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 |
Marin4ik, а что такое парный и непарный индекс ? (Я подумал что это «новое» название четным/нечетным) наверное.. я перевела с укр.. дак оно и должно так выводить..то не пойму…
0 |
Retired 7726 / 2558 / 671 Регистрация: 17.10.2009 Сообщений: 5,100 |
|
18.03.2010, 10:48 |
6 |
Marin4ik, если всё так как я подумал, то выводит всё совершенно верно. Смотри сама: Array A:
0 |
0 / 0 / 0 Регистрация: 18.03.2010 Сообщений: 4 |
|
18.03.2010, 10:51 [ТС] |
7 |
Marin4ik, если всё так как я подумал, то выводит всё совершенно верно. Смотри сама: а у меня… arr a — 5 -5 3 -3 -3 1 -2 -4 -2 -1 ((((((((((((((((
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 = 10def average(a):
s = 0
for i in range(N):
s += a[i]
return s/Narr = [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
- описание формальных параметров (тех, значения которых передаются из основной программы в функцию):
- параметры-переменные — параметры, значения которых становятся доступны и в основной программе (возвращаются в программу)
- тип возвращаемого функцией результата описывается в конце заголовка функции через двоеточие:
- Вызывается функция в теле основной программы, только если ее имя фигурирует в каком-либо выражении. В отличие от процедуры, которая вызывается отдельно.
- Внутри функции можно объявлять и использовать локальные переменные:
- значение, которое является результатом, записывается в переменную, имя которой совпадает с названием функции; объявлять ее НЕ НАДО:
Рассмотрим синтаксис:
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 | ||||
|
|
В рассмотренном примере функция имеет один параметр — 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 ___ Введите основание треугольника: ... Введите высоту треугольника: ... Периметр треугольника = ... ___ Введите основание треугольника: ... Введите высоту треугольника: ... Периметр треугольника = ...
Потренируйтесь в решении задач по теме, щелкнув по пиктограмме: