Разработать программу, которая вводит целочисленную матрицу из 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.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д