Урок из серии: «Язык программирования Паскаль»
На этом уроке рассмотрим алгоритмы поиска максимального (минимального) элементов в одномерном массиве.
Задача. Составить программу, которая формирует одномерный массив случайных чисел, выводит на экран, выполняет поиск максимального элемента массива, а затем выводит на экран его значение и порядковый номер в массиве.
Переменные:
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 — его порядковый номер.
Перед началом поиска предполагаем, что первый элемент массива минимальный, и его индекс — номер минимального элемента. При сравнении очередного элемента с минимальным, меняем знак отношения на противоположный.
Вы познакомились с алгоритмами поиска максимального (минимального) элемента массива.
На следующем уроке продолжим знакомиться с алгоритмами обработки одномерных массивов.