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

Урок из серии: «Язык программирования Паскаль»

На этом уроке рассмотрим алгоритмы поиска максимального (минимального) элементов в одномерном массиве.
Задача. Составить программу, которая формирует одномерный массив случайных чисел, выводит на экран, выполняет поиск максимального элемента массива, а затем выводит на экран его значение и порядковый номер в массиве.

Переменные:

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 — его порядковый номер.

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

Вы познакомились с алгоритмами поиска максимального (минимального) элемента массива.

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

Подписаться
Уведомить о
guest

0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии