Поиск максимального ( или минимального ) элемента массива
Алгоритм поиска. Делается предположение, что 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 позволяет начать новую итерацию цикла, даже если предыдущая не завершена.