Найти наибольший по модулю элемент матрицы

Задача

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

Решение

В языке Паскаль есть функция abs(), которая возвращает абсолютное значение переданного ей числа, т. е. его модуль. Воспользуемся ей в условии оператора ветвления при сравнении элементов.

Требуется найти не только значение элемента матрицы, но и его индексы. Поэтому будем определять только последние, так как по ним всегда можно получить значение. До цикла перебора двумерного массива присвоим переменным mi и mj значение 1. Тем самым предположим, что первый элемент и есть наибольший по модулю.

В цикле будем сравнивать модуль значения каждого элемента с модулем того, что находится в позиции [mi, mj]. Если абсолютное значение текущего элемента больше, то перезапишем указанные переменные, присвоив им индексы этого элемента.

const
    N = 4; M = 6;
 
var
    arr: array[1..N, 1..M] of integer;
    i, j, mi, mj: byte;
 
begin
    { заполнение матрицы, вывод на экран }
    randomize;
    for i:=1 to N do begin
        for j:=1 to M do begin
            arr[i,j] := random(200) - 100;
            write(arr[i,j]:4);
        end;
        writeln;
    end;
 
    { поиск первого максимального по модулю}
    mi := 1;
    mj := 1;
    for i:=1 to N do 
        for j:=1 to M do 
            if abs(arr[i,j]) > abs(arr[mi,mj]) then 
            begin
                mi := i;
                mj := j;
            end;
 
    writeln ('Item [',mi,',',mj,'] = ', arr[mi,mj]);
end.

Пример выполнения программы:

 -62  64 -55  23 -44  59
  16  12 -27 -59  34  -6
 -92 -14  67 -60   0 -94
 -82  40   5  34  86 -32
Item [3,6] = -94

Комментарии