Нахождение максимального и минимального элементов массива




Нахождение минимального и максимального элемента массива - эта типовая задача программирования. Она может быть решена стандартным методом.
Пусть у нас есть двумерный вещественный массив 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]




Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2019-06-26 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: