Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
20
Добавлен:
30.04.2013
Размер:
153.09 Кб
Скачать

А4. Сумма элементов массива:

S := 0;

for j:=1 to n do

S := S + a[j]; {Повторить для каждого элемента}

{end for}

А5. Поиск максимального / минимального элемента

Н

Алгоритм 5а

Алгоритм 5б

amax := a[1];

for j:=2 to n do

if a[j]>amax then

amax := a[j];

{end if}

{end for}

{максимальное значение

в переменной amax}

jmin := 1;

for j:=2 to n do

if a[j]<a[jmin] then

a[jmin] := a[j];

{end if}

{end for}

{индекс минимального элемента jmin }

{а само значение - в a[jmin]}

иже будут приведены два варианта алгоритма – первый для случая, когда требуется получить величину искомого элемента, а второй для случая, когда надо найти индекс в массиве. При этом алгоритм 5а позволяет найти величину максимального элемента массива, а алгоритм 5б – номер минимального элемента.

А6. Подсчет числа элементов массива, удовлетворяющих условию

np := 0; { np : integer }

for j:=1 to n do

if (a[j] удовлетворяет условию) then

np := np + 1;

{end if}

{end for}

{После завершения ципкла переменная np содержит

число элементов массива, удовлетворяющих условию}

В этом типовом алгоритме можно указать то условие, которое необходимо в конкретных условиях. Так, например, при подсчете количества положительных чисел это условие имеет вид «(a[j]>0)», а в случае подсчета количества простых чисел «Simple(a[j])», гдеSimple – имя функции, возвращающей значение TRUE. еслиa[j]простое число, и FALSE – в противоположном случае.

А7. Выбор элементов по условию

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

{Пусть a[1..nA] - исходный массив }

{ c[1..nC] – новый массив }

{ nC – фактическое число элементов в новом массиве}

{––––––––––––––––––––––––––––––––-}

nC := 0;

for j:=1 to n do {просмотреть каждый элемент в ’a’}

if (a[j] удовлетворяет условию) then

begin

nC := nC + 1; {}

c[nC] := a[j]; {добавить новый элемент в ’c’}

end; {if}

{end for}

А8. Проверка выполнения некоторого условия

В приведенном ниже фрагменте производится проверка факта существования в заданном массиве хотя бы одного элемента, удовлетворяющего некоторому условию.

В данном алгоритме просмотр элементов производится с использованием конструкции ”цикл-пока”. Это объясняется тем, что просмотр можно прекращать сразу после того, как будет найден элемент, удовлетворяющий условию. Однако поскольку возможна ситуация, что в массиве вообще нет элементов, удовлетворяющих условию, цикл может быть закончен либо когда найден первый элемент, удовлетворяющий условию, либо когда просмотрены все элементы массива, но в массиве нет ни одного элемента, удовлетворяющего условию. Для того чтобы своевременно закончить просмотр элементов и, после выхода из цикла установить, найден или нет требуемый элемент, в программе введена переменная булевского типа FlagFound, выполняющая функцию признака «найден/нет».

FlagFound := FALSE; {не найден пока} j := 1;

while (j<=n) and (not FlagFound) do

if (a[j] удовлетворяет условию) then

FlagFound := TRUE

else

j := j + 1;

{end if}

{end while}

{–––––––––––––––––––––––––––––––––––––––––-}

{если после выхода из цикла FlagFound=TRUE,

элемент найден}

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

Соседние файлы в папке лекции