Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
УМП к заданиям по информатике “Обработка массив...doc
Скачиваний:
5
Добавлен:
15.11.2019
Размер:
651.26 Кб
Скачать

3.2.3. Алгоритмы подпрограмм

3.2.3.1. Получение элементов вектора

Вычислить значения 30 элементов одномерного целочисленного массива F в интервале (-7, 8) с использованием генератора случайных чисел

Алгоритм процедуры vector

n , a, b

f[i..n]

Таблица переменных

Имя

Тип

Назначение

Параметр

n

целый

размерность

формальный

i

параметр цикла

локальный

a, b

интервал

формальный

f[1..n]

вектор

procedure vector(n,a,b:integer;var f:vect);

var i:integer;

begin

for i:=1 to n do f[i]:=round((b-a)*random(100)/100+a);

end;

3.2.3.2. Вычисление параметра вектора

Вычислить сумму положительных элементов третьей четверти массива

А лгоритм функции sum

n,f[i..n]

нет

да

sum

Таблица переменных

Имя

Тип

Назначение

Параметр

n

целый

размерность

формальный

f[1..n]

вектор

i

параметр цикла

локальный

s

вспомогательное

sum

имя функции

function sum(n:integer;f:vect):integer;

var i,s:integer;

begin

s:=0;

for i:=round(n/2)+1 to round(3*n/4) do if f[i] > 0 then s:=s+f[i];

sum:=s;

end;{sum}

3.2.3.3. Определение параметра вектора

Определить наибольший элемент среди нечетных по номеру элементов второй трети массива

Алгоритм функции max

n , f[1..n]

нет

да

нет

да

ma max

Таблица переменных

Имя

Тип

Назначение

Параметр

n

целый

размерность

формальный

f[1..n]

вещественный

вектор

i

целый

параметр цикла

локальный

mx

вспомогательное

max

имя функции

function max(n:integer; f:vect):integer;

var i,mx:integer;

begin

mx:=-1000;

for i:=round(n/3)+1 to round(2*n/3) do

if odd(i) then if f[i] > mx then mx:=f[i];

max:=mx;

end{max};

4.2.3.4. Упорядочение элементов вектора

Упорядочить нечетные по номеру элементы второй половины массива по убыванию квадратов значений

Алгоритм процедуры porjadok

n,f[1..n]

нет f[1..n]

д а

k=i

нет нет

да да

c=fi

fi=fk

fk=c

нет да

Таблица переменных

Имя

Тип

Назначение

Параметр

N

целый

размерность

формальный

f[1..n]

вектор

i, j

параметр цикла

локальный

k, c

вспомогательное

procedure porjadok(n:integer;var f:vect);

var i,k,j,c:integer;

begin

for i:=round(n/2)+1 to n-1 do

if odd(i) then

begin k:=i;

for j:=i+2 to n do

if odd(j) then if sqr(f[j]) > sqr(f[k]) then k:=j;

if i <> k then

begin

c:=f[i];

f[i]:=f[k];

f[k]:=c;

end;

end;

end {porjadok};