Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция 7 Массивы.doc
Скачиваний:
2
Добавлен:
02.11.2018
Размер:
215.04 Кб
Скачать

Поиск максимального ( или минимального ) элемента массива

Алгоритм поиска. Делается предположение, что 1-й элемент массива max (min), затем все элементы массива сравниваются с ним. Если во время проверки обнаруживается, что очередной элемент больше (меньше) принятого за max (min), то этот элемент становится максимальным (минимальным).

Задача 1. В массиве из N  20 элементов вычислить наибольший элемент массива Х и его номер.

program Example5;

uses

SysUtils;

const NN=20;

var n, i : byte; //количество элементов и индекс элемента

X : array[1.. NN] of real; // массив X

Xmax : real; // наибольший элемент массива X

Imax : byte; // его порядковый номер

begin

writeln('vvedite znachenie n');

readln(n);

for i :=1 to n do

begin

writeln( 'vvedite ', i, ' element massive X' );

read(X [i ]); //ввод элемента массива X

end;

Xmax := X[1]; //кандидат в Хmax

Imax :=1; //его номер Imax

for i :=2 to n do if X[i] > Xmax then //поиск Хmax

begin

Xmax:=X[i];

Imax:=i;

end;

writeln('Makcimalny element massiva Xmax= ',Xmax:6:2,);

writeln('Ego nomer Imax= ',Imax); //вывод результата

readln

end.

Поиск заданного элемента массива

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

Поиск осуществляется последовательным сравнением элементов массива с образцом до тех пор, пока не будет найден элемент, равный образцу, или пока не будут проверены все элементы.

Для поиска элементов удобно использовать операторы цикла For, Repeat..until или While..do.

Задача2. Найти заданный элемент в массиве и вывести его на экран дисплея.

program Example6;

uses

SysUtils;

const N=10;

var

Mas : array[1..N] of integer;

i : byte; //счетчик цикла

Yes : boolean; //признак обнаружения

obr: integer; //образец для поиска

begin

Writeln('vvedite massive'); //ввод элементов массива Mas

for i := 1 to N do

begin

Write( ' Mas [ ' , i , ' ] = ' );

Readln( Mas [ i ] );

end;

Writeln('vvedite obrazes ');

Readln(obr); // ввод образца для поиска

Yes := False; // нужного элемента в массиве нет

i :=1;

repeat // начать цикл поиска по образцу

if Mas[ i ]=obr then

begin

Yes:=True; //признак обнаружения

Break; //цикл завершить досрочно

end

else i:=i+1;

until ( i>N ) or ( Yes = True ); // пока условие ложно

if Yes=True then Writeln('1-e sovpadenie c elementom= ',

Mas [ i ], ' Ego nomer = ' , i ) // вывод найденного образца

else Writeln(' sovpadenie с obrazsom Not ');

Readln //сообщение об отсутствии образца в массиве

end.

признак

отсутствия

признак

обнаружения

Новые стандартные процедуры:

Процедура Break позволяет досрочно завершить цикл, не дожидаясь его окончания.

Процедура Continue позволяет начать новую итерацию цикла, даже если предыдущая не завершена.