На языке 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.
Тестирование программы
Ниже приведены результаты выполнения программы на примере различных входных данных.
Приложение 4
ОБРАЗЕЦ РЕШЕНИЯ ЗАДАЧИ