Разработать программу, которая вводит целочисленную матрицу из n строк и m столбцов (1 Формулировка задачи:
Разработать программу, которая вводит целочисленную матрицу из n строк и m столбцов (1<n<=100, 1<m<=50) и упорядочивает элементы матрицы. Правило упорядочивания: первую половину массива по возрастанию, вторую - по убыванию. Решение задачи: «Разработать программу, которая вводит целочисленную матрицу из n строк и m столбцов (1
textual
Листинг программы
const nmax=100;
mmax=50;
var a:array[1..nmax,1..mmax] of integer;
var n,m,k,i,j,t:integer;
begin
randomize;
repeat
write('Количество строк четное число от 2 до ',nmax,' n=');
readln(n);
until(n in [2..nmax])and(n mod 2=0);
repeat
write('Количество столбцов от 2 до ',mmax,' m=');
readln(m);
until m in [2..mmax];
writeln('Исходная матрица');
for i:=1 to n do
begin
for j:=1 to m do
begin
a[i,j]:=random(50);
write(a[i,j]:3)
end;
writeln
end;
writeln;
k:=n div 2;
for i:=1 to k*m-1 do
for j:=i+1 to k*m do
if a[(i-1) div m+1,(i-1) mod m+1]>a[(j-1) div m+1,(j-1) mod m+1] then
begin
t:=a[(i-1) div m+1,(i-1) mod m+1];
a[(i-1) div m+1,(i-1) mod m+1]:=a[(j-1) div m+1,(j-1) mod m+1];
a[(j-1) div m+1,(j-1) mod m+1]:=t;
end;
for i:=1 to k*m-1 do
for j:=i+1 to k*m do
if a[(k*m+i-1) div m+1,(k*m+i-1) mod m+1]<a[(k*m+j-1) div m+1,(k*m+j-1) mod m+1] then
begin
t:=a[(k*m+i-1) div m+1,(k*m+i-1) mod m+1];
a[(k*m+i-1) div m+1,(k*m+i-1) mod m+1]:=a[(k*m+j-1) div m+1,(k*m+j-1) mod m+1];
a[(k*m+j-1) div m+1,(k*m+j-1) mod m+1]:=t;
end;
writeln('Отсортированная матрица');
for i:=1 to n do
begin
for j:=1 to m do
write(a[i,j]:3);
writeln
end;
end.
Объяснение кода листинга программы
- const nmax=100;
- const mmax=50;
- var a:array[1..nmax,1..mmax] of integer;
- var n,m,k,i,j,t:integer;
- begin
randomize;
repeat
write('Количество строк четное число от 2 до ',nmax,' n=');
readln(n);
until(n in [2..nmax])and(n mod 2=0);
repeat
write('Количество столбцов от 2 до ',mmax,' m=');
readln(m);
until m in [2..mmax];
writeln('Исходная матрица');
for i:=1 to n do
begin
for j:=1 to m do
begin
a[i,j]:=random(50);
write(a[i,j]:3)
end;
writeln
end;
writeln;
k:=n div 2;
for i:=1 to km-1 do
for j:=i+1 to km do
if a[(i-1) div m+1,(i-1) mod m+1]>a[(j-1) div m+1,(j-1) mod m+1] then
begin
t:=a[(i-1) div m+1,(i-1) mod m+1];
a[(i-1) div m+1,(i-1) mod m+1]:=a[(j-1) div m+1,(j-1) mod M+1];
a[(j-1) div m+1,(j-1) mod M+1]:=t;
end;
for i:=1 to km-1 do
for j:=i+1 to km do
if a[(km+i-1) div m+1,(km+i-1) mod M+1]<a[(km+j-1) div m+1,(km+j-1) mod M+1] then
begin
t:=a[(km+i-1) div m+1,(km+i-1) mod M+1];
a[(km+i-1) div M+1,(km+i-1) mod M+1]:=a[(km+j-1) div M+1,(km+j-1) mod M+1];
a[(km+j-1) div M+1,(km+j-1) mod M+1]:=t;
end;
end;
writeln('Отсортированная матрица');
for i:=1 to n do
begin
for j:=1 to m do
write(a[i,j]:3);
writeln
end;
end;
end.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д
Попробуйте бесплатно
Формулировка задачи:
Разработать программу, которая вводит целочисленную матрицу из n строк и m столбцов (1<n<=100, 1<m<=50) и упорядочивает элементы матрицы. Правило упорядочивания: первую половину массива по возрастанию, вторую - по убыванию.
Решение задачи: «Разработать программу, которая вводит целочисленную матрицу из n строк и m столбцов (1
textual
Листинг программы
const nmax=100; mmax=50; var a:array[1..nmax,1..mmax] of integer; var n,m,k,i,j,t:integer; begin randomize; repeat write('Количество строк четное число от 2 до ',nmax,' n='); readln(n); until(n in [2..nmax])and(n mod 2=0); repeat write('Количество столбцов от 2 до ',mmax,' m='); readln(m); until m in [2..mmax]; writeln('Исходная матрица'); for i:=1 to n do begin for j:=1 to m do begin a[i,j]:=random(50); write(a[i,j]:3) end; writeln end; writeln; k:=n div 2; for i:=1 to k*m-1 do for j:=i+1 to k*m do if a[(i-1) div m+1,(i-1) mod m+1]>a[(j-1) div m+1,(j-1) mod m+1] then begin t:=a[(i-1) div m+1,(i-1) mod m+1]; a[(i-1) div m+1,(i-1) mod m+1]:=a[(j-1) div m+1,(j-1) mod m+1]; a[(j-1) div m+1,(j-1) mod m+1]:=t; end; for i:=1 to k*m-1 do for j:=i+1 to k*m do if a[(k*m+i-1) div m+1,(k*m+i-1) mod m+1]<a[(k*m+j-1) div m+1,(k*m+j-1) mod m+1] then begin t:=a[(k*m+i-1) div m+1,(k*m+i-1) mod m+1]; a[(k*m+i-1) div m+1,(k*m+i-1) mod m+1]:=a[(k*m+j-1) div m+1,(k*m+j-1) mod m+1]; a[(k*m+j-1) div m+1,(k*m+j-1) mod m+1]:=t; end; writeln('Отсортированная матрица'); for i:=1 to n do begin for j:=1 to m do write(a[i,j]:3); writeln end; end.
Объяснение кода листинга программы
- const nmax=100;
- const mmax=50;
- var a:array[1..nmax,1..mmax] of integer;
- var n,m,k,i,j,t:integer;
- begin randomize; repeat write('Количество строк четное число от 2 до ',nmax,' n='); readln(n); until(n in [2..nmax])and(n mod 2=0); repeat write('Количество столбцов от 2 до ',mmax,' m='); readln(m); until m in [2..mmax]; writeln('Исходная матрица'); for i:=1 to n do begin for j:=1 to m do begin a[i,j]:=random(50); write(a[i,j]:3) end; writeln end; writeln; k:=n div 2; for i:=1 to km-1 do for j:=i+1 to km do if a[(i-1) div m+1,(i-1) mod m+1]>a[(j-1) div m+1,(j-1) mod m+1] then begin t:=a[(i-1) div m+1,(i-1) mod m+1]; a[(i-1) div m+1,(i-1) mod m+1]:=a[(j-1) div m+1,(j-1) mod M+1]; a[(j-1) div m+1,(j-1) mod M+1]:=t; end; for i:=1 to km-1 do for j:=i+1 to km do if a[(km+i-1) div m+1,(km+i-1) mod M+1]<a[(km+j-1) div m+1,(km+j-1) mod M+1] then begin t:=a[(km+i-1) div m+1,(km+i-1) mod M+1]; a[(km+i-1) div M+1,(km+i-1) mod M+1]:=a[(km+j-1) div M+1,(km+j-1) mod M+1]; a[(km+j-1) div M+1,(km+j-1) mod M+1]:=t; end; end; writeln('Отсортированная матрица'); for i:=1 to n do begin for j:=1 to m do write(a[i,j]:3); writeln end; end; end.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д