Урок из серии: «Язык программирования Паскаль»
На этом уроке рассмотрим алгоритмы поиска максимального (минимального) элементов в одномерном массиве.
Задача. Составить программу, которая формирует одномерный массив случайных чисел, выводит на экран, выполняет поиск максимального элемента массива, а затем выводит на экран его значение и порядковый номер в массиве.
Переменные:
m — массив;
n — количество элементов в массиве;
i — переменная цикла;
max — значение наибольшего элемента;
numer_max — его порядковый номер.
Перед началом поиска максимального элемента допустим, что его первый элемент и является максимальным элементом, а его индекс указывает позицию максимального элемента в массиве. Это запишется так:
max := m[1]; {Cчитать 1-й элемент максимальным}
numer_max := 1; {Запомнить номер максимального элемента} |
Для организации просмотра элементов будем использовать оператор цикла с параметром, который будет указывать индекс очередного элемента (переменная цикла будет индексом элемента массива).
Сравнение очередного элемента массива с максимальным осуществляется оператором if m[i] > max then. Если очередной элемент массива больше, чем максимальный, то следует считать его значение максимальным и запомнить его индекс. Данный фрагмент кода записывается таким образом:
for i:= 2 to n do
begin
if m[i]> max then
begin
max:= m[i];
numer_max:= i;
end;
end; |
Текст процедуры получится таким:
procedure Maximum(m:myarray; var max,numer_max:integer);
{
Процедура нахождение максимального элемента массива и его номера.
m : имя массива;
max : значение максимального элемента;
maxi : номер максиального элемента в массиве.
}
var
i: integer;
begin
max:=m[1];
numer_max:=1;
for i:= 2 to n do
begin
if m[i]> max then
begin
max:= m[i];
numer_max:= i;
end;
end;
end; |
Составим программу. В ней воспользуемся для заполнения массива уже знакомой процедурой — Init2, которая заполняет массив случайными числами из заданного интервала.
program Max_elem;
const
n = 20;
type
myarray= array[1..count] of byte;
var
m:myarray;
i, max, maxi: integer;
Procedure Init2(a,b: integer; Var m : myarray);
...
procedure Maximum(m:myarray; var max,numer_max:integer);
...
begin {main}
init2(0, 50, m);
maximum(m, max, maxi);
writeln('Максимальный элемент - ', max);
writeln('Он расположен на ',maxi, ' месте.');
end. |
Для поиска минимального элемента и его порядкового номера меняем обозначения:
min — значение наименьшего элемента;
numer_min — его порядковый номер.
Перед началом поиска предполагаем, что первый элемент массива минимальный, и его индекс — номер минимального элемента. При сравнении очередного элемента с минимальным, меняем знак отношения на противоположный.
Вы познакомились с алгоритмами поиска максимального (минимального) элемента массива.
На следующем уроке продолжим знакомиться с алгоритмами обработки одномерных массивов.