Найти наибольший и наименьший элемент матрицы и поменять их местами - Pascal ABC (13367)

Узнай цену своей работы

Формулировка задачи:

Даны натуральные числа N,M и матрица разрядности NxM действительных чисел, где n,m>=10. Найти наибольший и наименьший элемент матрицы и поменять их местами. Вот что написал, дальше помогите

Решение задачи: «Найти наибольший и наименьший элемент матрицы и поменять их местами»

textual
Листинг программы
For i:=1 to n do begin
  for j:=1 to m do begin
      A[i,j]:=random(20)-5;
      Write(A[i,j]:3,' ');
  end;
  WriteLn;
end;
 
// поиск индексов минимального и максимального
imin :=1; jmin:=1;
imax:=1; jmax:=1;
For i:=1 to n do 
  for j:=1 to m do 
  begin
    if A[i,j]>A[imax,jmax] then begin imax:=i; jmax:=j end;
    if A[i,j]<A[imin,jmin] then begin imin:=i; jmin:=j end;
  end; 
 
// поменять местами
t:=A[imin,jmin];
A[imin,jmin] := A[imax,jmax];
A[imax,jmax] := t;
 
// вывести матрицу
For i:=1 to n do 
  begin
    for j:=1 to m do Write(A[i,j]:3,' ');
    WriteLn;
  end;
 
Конец сказки.

Объяснение кода листинга программы

  1. В первой строке кода используется цикл for, который выполняется от 1 до n (количество строк в матрице) и в каждой итерации выполняет следующие действия:
    • Для каждой строки i в матрице выполняется внутренний цикл for, который в свою очередь выполняется от 1 до m (количество столбцов в матрице).
    • Внутри внутреннего цикла присваивается случайное значение каждой ячейке матрицы A[i,j] с помощью функции random(20)-5;. Это значение будет являться оценкой от -20 до 19 включительно.
    • Значение каждой ячейки выводится на экран с помощью функции Write(A[i,j]:3,' '). Здесь 3 - это количество знаков после запятой, а ' - это пробел между значениями.
    • После завершения внутреннего цикла, выводится символ новой строки WriteLn;.
    • Все эти действия выполняются для каждой строки матрицы.
  2. После завершения первой строки кода начинается вторая часть, которая ищет индексы минимального и максимального элементов в матрице. Для этого используются два вложенных цикла for:
    • Первый цикл for выполняется от 1 до n (количество строк в матрице).
    • Второй цикл for выполняется от 1 до m (количество столбцов в матрице).
    • Внутри циклов сравниваются значения элементов матрицы A[i,j] и A[imin,jmin] (наименьший элемент) и A[imax,jmax] (наибольший элемент). Если текущий элемент A[i,j] больше A[imax,jmax], то обновляется значение наибольшего элемента, а если текущий элемент меньше A[imin,jmin], то обновляется значение наименьшего элемента.
    • После завершения второго цикла for, обновленные значения наибольшего и наименьшего элементов сохраняются в переменных imax и imin соответственно.
  3. После завершения второй части кода начинается третья часть, в которой происходит обмен местами наименьшего и наибольшего элементов. Для этого используется оператор присваивания t:=A[imin,jmin];A[imin,jmin] := A[imax,jmax];A[imax,jmax] := t;. Здесь t является временной переменной, которая хранит значение наименьшего элемента, а затем присваивается наибольшему элементу, а значения наименьшего элемента обновляются на значения наибольшего элемента.
  4. После завершения третьей части кода начинается четвертая и последняя часть, в которой выводится окончательное значение матрицы. Для этого используется еще один цикл for, который выполняется от 1 до n (количество строк в матрице):
    • Внутри цикла выводятся значения каждой ячейки матрицы A[i,j] с помощью функции Write(A[i,j]:3,' ').
    • После завершения внутреннего цикла выводится символ новой строки WriteLn;. Таким образом, весь код выполняет следующие действия: создает матрицу случайных чисел, находит наименьший и наибольший элементы, меняет их местами и выводит окончательное значение матрицы.

Оцени полезность:

5   голосов , оценка 4.4 из 5
Похожие ответы