Заменить наименьший элемент каждой строки матрицы, начиная со второй, наибольшим элементом предыдущей строки. - Turbo Pascal
Формулировка задачи:
Дана прямоугольная матрица A(n*m). Заменить наименьший элемент каждой строки, начиная со второй, наибольшим элементом предыдущей строки.
Решение задачи: «Заменить наименьший элемент каждой строки матрицы, начиная со второй, наибольшим элементом предыдущей строки.»
textual
Листинг программы
uses crt;
const nmax=15;
var a:array[1..nmax,1..nmax] of integer;
m,n,i,j,jmn:byte;
mn,mx:integer;
begin
clrscr;
randomize;
repeat
write('Количество строк до ',nmax,' n=');
readln(n);
until n in [1..nmax];
repeat
write('Количество столбцов до ',nmax,' m=');
readln(m);
until m in [1..nmax];
writeln('Исходная матрица:');
for i:=1 to n do
begin
for j:=1 to m do
begin
a[i,j]:=random(20);
write(a[i,j]:4);
end;
writeln;
end;
for i:=n downto 2 do
begin
jmn:=1;
for j:=2 to m do
if a[i,j]<a[i,jmn] then jmn:=j;
mx:=a[i-1,1];
for j:=2 to m do
if a[i-1,j]>mx then mx:=a[i-1,j];
a[i,jmn]:=mx;
end;
writeln('Измененная матрица');
for i:=1 to n do
begin
for j:=1 to m do
write(a[i,j]:4);
writeln;
end;
readln
end.
Объяснение кода листинга программы
- Создается переменная
nmaxсо значением 15. - Создается переменная
aтипаarray[1..nmax,1..nmax] of integer;. - Создаются три переменные
m,nиiтипаbyte;. - Создается переменная
mnи инициализируется значением 0. - Создается переменная
mxи инициализируется значением 0. - Выполняется цикл
repeat, который запрашивает у пользователя количество строк и столбцов матрицы. - Внутри цикла
repeatвыводится сообщение с запрошенными значениями. - Выполняется цикл
for, который начинается с индекса строки 1 и продолжается до индекса строки 2. - Внутри цикла
forвыполняется циклfor, который начинается с индекса столбца 1 и продолжается до индекса столбцаm. - Внутри внутреннего цикла проверяется условие
if a[i,j]<a[i,jmn]и если оно истинно, то значение переменнойjmnустанавливается равным значению переменнойj. - Если условие
if a[i-1,j]>mxистинно, то значение переменнойmxустанавливается равным значению переменнойa[i-1,j]. - Значение переменной
a[i,jmn]устанавливается равным значению переменнойmx. - Выполняется цикл
for, который начинается с индекса строки 1 и продолжается до индекса строки 2. - После окончания внутреннего цикла выводится сообщение с измененной матрицей.
- Выполняется цикл
for, который начинается с индекса строки 1 и продолжается до индекса строки 2. - После окончания внешнего цикла выводится сообщение с исходной матрицей.
- Выполняется цикл
readln, чтобы дождаться ввода пользователя.