Нахождение минимального и максимального элемента массива - эта типовая задача программирования. Она может быть решена стандартным методом.
Пусть у нас есть двумерный вещественный массив A размером 3х3, другими словами, имеющий 3 строки и 3 столбца. Опишем дополнительно переменные i,j для использования под индексы элементов и переменные min и max, для хранения минимума и максимума соответственно.
var a:array[1..3,1..3] of real;
i,j: byte;
min, max: real;
Теперь запоминаем первые элементы массива:
min:=a[1,1];
max:=a[1,1];
И перебираем весь массив. Если встречается элемент меньше или больше раннее запомненного, мы сохраняем его.
for i:=1 to 3 do
for j:=1 to 3 do
begin
if a[i,j]<min then min:=a[i,j];
if a[i,j]>max then max:=a[i,j];
end;
В результате в переменных min и max сохранятся нужные значения. Причем, если в массиве несколько равных минимальных или максимальных элементов, то в нашем случае, т.к. условие (<,>) строгое, сохранятся первые встреченные, т.е. с меньшими индексами. Если поставить не строгое условие или перебирать массив в обратном порядке (напр. через for... downto...), то мы получим последние макс. и мин. элементы.
Готовая программа может выгладеть так:
uses crt;
var a:array[1..3,1..3] of real;
i,j: byte;
min, max: real;
begin
{Очистка экрана}
clrscr;
{Заполнение массива}
writeln('Vvodite elementy matricy: ');
for i:=1 to 3 do
for j:=1 to 3 do readln(a[i,j]);
{Нахождение min, max}
min:=a[1,1];
max:=a[1,1];
for i:=1 to 3 do
for j:=1 to 3 do
begin
if a[i,j]<min then min:=a[i,j];
if a[i,j]>max then max:=a[i,j];
end;
{Вывод min, max}
writeln('Minimum: ',min:5:2);
writeln('Maximum: ',max:5:2);
{Задержка до нажатия любой клавиши}
readkey;
end.
Сортировка массива по возрастанию и убыванию в строках и столбцах
ОСНОВНЫЕ АЛГОРИТМЫДЛЯ РАБОТЫС ДВУМЕРНЫМИ МАССИВАМИ
1.
Заполнение двумерного массива.
Массив А содержит 3 строки и 4 столбца, т.е. 3*4=12 элементов.
^ Заполнение по строке: FOR i:=1 to 3 DO ßвнешний цикл, изменяется номер строки FOR j:=1 to 4 DO ßвнутренний цикл, изменяется номер столбца Read (A[i,j]); ß заполнение с клавиатуры |
^ Заполнение по столбцу: FOR j:=1 to 4 DO ßвнешний цикл, изменяется номер столбца FOR i:=1 to 3 DO ßвнутренний цикл, изменяется номер строки Read (A[i,j]); ß заполнение с клавиатуры |
2.
Печать в виде таблицы.
FOR i:=1 to 3 DO
Begin
FOR j:=1 to 4 DO
WRITE(A[i,j],’ ‘); ß печатаем элементы строки,
не перемещая курсор
WRITELN; ßперемещаем курсор
End;
3.
Сумма элементов массива.
…
S:=0;
FOR i:=1 to 3 DO
FOR j:=1 to 4 DO
S:=S+A[i,j];
…
4.
Вычисление суммы элементов каждой строки и каждого столбца.
Мы используем базовый алгоритм вычисления суммы элементов одномерного массива (у нас это будут строки) и повторим его столько раз, сколько имеется строк.
FOR i:=1 to 3 DO
Begin
S:=0;
FOR j:=1 to 4 DO
S:=S+A[i,j];
WRITELN(‘сумма ‘,i,’ – строки=‘, S);
End;
Для того, чтобы перемещаться по строке мы меняем индекс j.
Сумма каждого столбца находится аналогично.
5.
Максимальный (минимальный) элемент массива.
Построим алгоритм поиска максимального элемента таким образом: введем три дополнительные переменные с именами max и Imax_m, Imax_n. Присвоим им начальные значения – переменной max значение первого элемента массива A[1,1], Imax_m - номер первой строки, Imax_n - номер первого столбца. Затем сравниваем каждый элемент с переменной max, если его значение оказывается больше, то присваиваем его переменной max, переменной Imax_m присваиваем индекс строки этого элемента и переменной Imax_n присваиваем индекс столбца этого элемента.
Max:=[1,1];
Imax_m:=1;
Imax_n:=1;
FOR i:=1 to 3 DO
FOR j:=1 to 4 DO
If A[i,j]>Max then begin Max:=A[i,j]; Imax_m:=i;
Imax_n:=j; end;
WRITELN(‘Max =‘, Max,’ строка=’,Imax_m,’ столбец=’,Imax_n);
6.
Поиск максимального (минимального) элементов каждой строки (столбца) и их индексов.
FOR i:=1 to 3 DO
Begin
Max:=[i,1];
Imax_n:=1;
FOR j:=1 to 4 DO
If A[i,j]>Max then begin Max:=A[i,j]; Imax_n:=j; end;
WRITELN(‘Max ‘,i,’ – строки=‘, Max,’ его индекс=’,Imax_n);
End;
Введем некоторые понятия:
главная диагональ: элементы А[1,1], A[2,2], A[3,3], A[4,4] (индексы элементов, расположенных на главной диагонали (i=j)); побочная диагональ элементы А[4,1], A[3,2], A[2,3], A[1,4] (сумма индексов элементов на 1 больше размерности строки (или столбца), т.е. i+j=4+1 à в общем виде i+j=n+1).
------- | А[1,2] | А[1,3] | А[1,4] |
--------- | А[2,3] | А[2,4] | |
---------- | А[3,4] | ||
----------- |
Элементы, расположенные над главной диагональю. Для индексов элементов, расположенных над главной диагональю выполняется отношение i<j.< b="">
-------- | |||
А[2,1] | ------- | ||
А[3,1] | А[3,2] | ------- | |
А[4,1] | А[4,2] | А[4,3] | --------- |
Элементы, расположенные под главной диагональю. Для индексов элементов, расположенных под главной диагональю выполняется отношение i>j.
ОСНОВНЫЕ АЛГОРИТМЫДЛЯ РАБОТЫС КВАДРАТНЫМИ МАТРИЦАМИ
1.
СУММА
Сумма элементов главной диагонали S:=0; FOR i:=1 to n DO S:=S+A[i,j]; | Сумма элементов, стоящих ниже главной диагонали S:=0; FOR i:=1 to n DO FOR j:=1 to i DO S:=S+A[i,j]; |
Сумма элементов, стоящих выше главной диагонали S:=0; FOR i:=1 to n DO FOR j:=i to n DO S:=S+A[i,j]; | Сумма элементов, стоящих выше побочной диагонали S:=0; FOR i:=1 to n DO FOR j:=1 to n-i+1 DO S:=S+A[i,j]; |
2.
Обмен
^ Поменять местами 1 и 3 строки FOR j:=1 to n DO Begin C:=A[1,j]; A[1,j]:=A[3,j]; A[3,j]:=C end; | Поменять местами 1 и 2 столбцы FOR i:=1 to n DO Begin C:=A[i,1]; A[i,1]:=A[i,2]; A[i,2]:=C end; |
3.
Найти минимальный элемент побочной диагонали.
Min:=A[1,n];
FOR i:=1 to n DO
If A[i,n+1-i]