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

Объяснение кода листинга программы

  1. const nmax=100;
    1. const mmax=50;
    2. var a:array[1..nmax,1..mmax] of integer;
    3. var n,m,k,i,j,t:integer;
    4. 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.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 4 из 5
Похожие ответы