Составить визуальные циклические алгоритмы для следующих задач обработки двумерных массивов.
Ввести двумерный массив размером 7*4 . Найти наименьший элемент двумерного массива. Перенести строку, содержащую этот элемент, в конец.
Решение
Блок-схема
Начало
i:=1; 7
Ввод A[i][j]
j:=1; 4
i:=1; 7
Вывод A[i][j]
j:=1; 4
Min := A[1][1]
k := 1
1
Начало
i:=1; 7
Ввод A[i][j]
j:=1; 4
i:=1; 7
Вывод A[i][j]
j:=1; 4
Min := A[1][1]
k := 1
1
j:=1; 4
Min := a[i][j]
k:=i
A[i][j]<Min
i:=1; 7
нет
да
1
Вывод Min, k
j:=1; 4
Tmp[j]:=A[k][j]
i:=k; 6
j:=1; 4
A[i][j] := A[i + 1][j]
2
j:=1; 4
Min := a[i][j]
k:=i
A[i][j]<Min
i:=1; 7
нет
да
1
Вывод Min, k
j:=1; 4
Tmp[j]:=A[k][j]
i:=k; 6
j:=1; 4
A[i][j] := A[i + 1][j]
2
j:=1; 4
A[7][j]:=Tmp[j]
i:=k; 7
j:=1; 4
2
Вывод A[i][j]
Конец
j:=1; 4
A[7][j]:=Tmp[j]
i:=k; 7
j:=1; 4
2
Вывод A[i][j]
Конец
Программа
program Lab_3;
//А - исходный массив
//Min- минимальный элемент
//i,j - индексы
//k - номер строки с минимальным элементом
//tmp - одномерный массив для временного хранения строки с минимальным элементом
var
A: array[1..7, 1..4] of integer;
Tmp: array [1..4] of integer;
i, j, k, Min: integer;
begin
writeln('Ввод элементов массива А');
for i := 1 to 7 do
begin
writeln('строка ', i);
for j := 1 to 4 do
readln(A[i][j]);
end;
writeln('Исходный массив А');
for i := 1 to 7 do
begin
writeln;
for j := 1 to 4 do
write(A[i][j]:5);
end;
//Поиск минимального
Min := A[1][1];
k := 1;
for i := 1 to 7 do
for j := 1 to 4 do
if A[i][j] < Min then
begin
Min := A[i][j];
k := i;
end;
writeln('Min=', Min);
writeln('Находится в строке k=', k);
//сохраняем строку с минимальным в Tmp
for j := 1 to 4 do
Tmp[j] := A[k][j];
//поднимаем строки вверх на одну, заканчивая на строке с минимальным
for i := k to 6 do
for j := 1 to 4 do
A[i][j] := A[i + 1][j];
//Записываем TMP в последнюю строку
for j := 1 to 4 do
A[7][j] := Tmp[j];
writeln('Преобразованный массив А');
for i := 1 to 7 do
begin
writeln;
for j := 1 to 4 do
write(A[i][j]:5);
end;
end