Поиск максимального элемента в массиве | Язык Паскаль
Pascal. Основы программирования Сложные Средние Простые задачи

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

Найти максимальный элемент численного массива.

Алгоритм решения задачи:

Значения, составляющие массив, могут быть получены из разных источников: путем вызова функции random, ввода значений пользователем, считывания из файла. В программе ниже используется первый вариант.

В задачах подобного рода (поиск максиму или минимума) может быть поставлена цель, найти

  • только индекс элемента,
  • только значение или
  • как индекс, так и значение.

В программе ниже используется последний вариант.

Удобно, когда при запуске программы весь массив выводился на экран. В этом случае пользователь может оценить правильность работы программы.

  • В переменной max_num хранится текущее максимальное значение массива, а в max_index – его позиция (индекс).
  • В программе можно выделить две части: заполнение массива числами с выводом их на экран (первый цикл for) и непосредственно поиск максимума (второй цикл for).
  • Перед первым циклом запускается процедура randomize для того, чтобы при каждом запуске программы значения массива были разными.
  • Изначально делается предположение, что первый элемент массива и есть максимум. Поэтому переменной max_index присваивается значение 1 (то есть индекс первого элемента массива), а max_num – непосредственно значение, хранящееся в первой ячейке массива.
  • Начиная со второго элемента, каждое очередное значение массива сравнивается с текущим значением max_num. В случае, если текущее значение массива больше, чем хранящиеся в max_num, происходит новое присваивание обоим переменным текущего значения и индекса.

Программа на языке Паскаль:

const
    m = 20;
 
var
    arr: array[1..m] of byte;
    max_num, max_index: byte;
    i: byte;
 
begin
    randomize;
 
    for i := 1 to m do begin
        arr[i] := random(100);
        write (arr[i]:3);
    end;
 
    max_index := 1;
    max_num := arr[1];
 
    for i := 2 to m do
        if arr[i] > max_num then begin
            max_index := i;
            max_num := arr[i];
        end;
 
    writeln;
    writeln ('Max = ',max_num);
    writeln ('position: ', max_index);
 
end.