На языке Pascal
Ввод элементов двумерного массива
Для того, чтобы прокомментировать, что вначале будет выведен исходный массив на экран, используем оператор writeln('исходная матрица:').
Рассмотренный фрагмент блок-схемы для реализации ввода элементов двумерного массива на языке Pascal будет представлен в следующем виде:
for i:=1 to n do
Begin
for i:=1 to n do begin
a[i,j]:=random(21)-5;
write(a[i,j]:4); end;
writeln;
End;
writeln;
Запись write(a[i,j]:4) обозначает, что для вывода каждого элемента на экран отводится 4 позиции.
Следующий далее оператор writeln без параметров просто переводит курсор на другую строку. Это необходимо для того, чтобы данные выводились на экран в виде матрицы.
Добавим еще оператор writeln без параметров для более удобного восприятия информации с экрана.
Поиск минимального элемента в каждом столбце
Далее начинаем обработку массива. Обработка массива осуществляется в цикле с параметром.
Для того, чтобы прокомментировать, что вначале будет выведен исходный массив на экран, используем оператор writeln('Минимальные элементы столбцов'). Обработка массива заключается в сравнении минимальных элементов столбцов двумерного массива.
|
|
Поиск минимального элемента в каждом столбце, изложенный графическим способом, реализуем в следующем фрагменте программы:
min:=a[1,1];
imin:=1;
for j:=1 to m do
Begin
minst:=a[1,j];
for i:=2 to n do
if a[i,j] < minst
then
minst:=a[i,j];
write(minst:4);
Чтобы проконтролировать работу программы с помощью оператора write(minst:4) выводим значения минимальных элементов столбцов на экран.
Поиск минимального элемента
Среди найденных минимальных элементов столбцов
Далее с помощью условия if minst < min then находимминимальный элемент среди минимальных элементов столбцов и запоминаем его значение и номер begin min:= minst; imin:= j end. Как только рассмотрим все элементы массива значение минимального элемента и его номера выведем на экран. Фрагмент программы, реализующий поиск минимального элемента среди минимальных элементов столбцов двумерного массива целых чисел приведен ниже.
min:=a[1,1];
imin:=1;
for j:=1 to m do
…………………………
if minst < min then
Begin
min:= minst;
imin:= j
end;
end;
writeln;
writeln('Минимальный элемент ', min);
writeln('Номер столбца с минимальным элементом ', imin);
writeln;
Сортировка столбца с минимальным элементом
Следующий цикл реализует алгоритм сортировки массива методом обмена.
Запись for i:=1 to n-1 do означает, что элементы массива будут обрабатываться, начиная с первого до предпоследнего. Внутренний цикл просматривает элементы от i+1 до n -того элемента массива (for j:=i+1 to n do). Если сравниваемый элемент больше следующего (if a[i,imin] > a[j,imin]), то значения соответствующих элементов меняются местами. Для того, чтобы поменять их местами, используем буферную переменную k. Сначала в переменной k сохраняется значение сравниваемого элемента массива (k:=a[i,imin]), затем элементу с этим номером присваивается значение следующего элемента (a[i,imin]:=a[j,imin]), после чего этому элементу присваивается значение буферной переменной k (a[j,imin]:=k).
|
|
Фрагмент программы:
for i:=1 to n-1 do
for j:=i+1 to n do
if a[i,imin] > a[j,imin] then
Begin
k:=a[i,imin];
a[i,imin]:=a[j,imin];
a[j,imin]:=k;
end;
Вывод преобразованного массива
После сортировки выводим полученный массив на экран стандартными средствами вывода:
for i:=1 to n do
begin
for i:=1 to n do
write(a[i,j]:4);
writeln;
end;
где write(a[i,j]:4) – вывод элементов двумерного массива в строку с указанием количества занимаемых позиций.
Листинг программы
Program Var_14;
Uses crt;
Const n=4; m=5
Var a: array[1..n, 1..m] of integer;
i, j, k, min, imin, minst: integer;
Begin
Clrscr; randomize;
Writeln('исходная матрица:');
For i:=1 to n do
Begin
for i:=1 to n do begin
a[i,j]:=random(21)-5;
write(a[i,j]:4); end;
writeln;
End;
Writeln;
Writeln('Минимальные элементы столбцов ');
min:=a[1,1]; imin:=1;
For j:=1 to m do
Begin
minst:=a[1,j];
for i:=2 to n do if a[i,j] < minst then minst:=a[i,j];
write(minst:4);
if minst < min then begin min:= minst; imin:= j end;
End;
Writeln;
Writeln('Минимальный элемент ', min);
Writeln('Номер столбца с минимальным элементом ', imin);
Writeln;
For i:=1 to n-1 do
for j:=i+1 to n do
if a[i,imin] > a[j,imin] then
begin k:=a[i,imin]; a[i,imin]:=a[j,imin]; a[j,imin]:=k; end;
Writeln;
Writeln('Массив с упорядоченным', imin, 'столбцом в порядке возрастания');
For i:=1 to n do
Begin
for i:=1 to n do write(a[i,j]:4);
Writeln;
End;
End.