Дана действительная матрица А=[aij]. Составить схему алгоритма и программу, в которой есть главный модуль и подпрограмма перестановки рядов матрицы без уменьшения первых элементов рядов — Pascal(Паскаль)

Модуль

unit matrica;{имя модуля, должно совпадать с именем файла *.pas}
interface
const nmax=20;
type matr=array[1..nmax,1..nmax] of integer;
procedure Vvod(var mt:matr;var x,y:byte);
procedure Vyvod(var mt:matr;x,y:byte);
procedure Sort(var mt:matr;x,y:byte);
implementation
procedure Vvod(var mt:matr;var x,y:byte);{создание матрицы, ее размеры}
var i,j:byte;
begin
repeat
write('Количество строк=');
readln(x);
until x in [1..nmax];
repeat
write('Количество столбцов=');
readln(y);
until y in [1..nmax];
writeln('Матрица:');
for i:=1 to x do
for j:=1 to y do
mt[i,j]:=random(20);
end;
procedure Vyvod(var mt:matr;x,y:byte);{вывод матрицы на экран}
var i,j:byte;
begin
for i:=1 to x do
 begin
  for j:=1 to y do
  write(mt[i,j]:4);
  writeln;
 end;
writeln;
end;
procedure Sort(var mt:matr;x,y:byte);{сортировка первого столбца и перестпновка строк}
var i,j,k:byte;
    bf:integer;
begin
for i:=1 to x-1 do{обменная сортировка первого столбца}
for j:=i+1 to x do
if mt[i,1]>mt[j,1] then
for k:=1 to y do{с одновременной перестановкой элементов во всех столбцах}
 begin
  bf:=mt[i,k];
  mt[i,k]:=mt[j,k];
  mt[j,k]:=bf;
 end;
end;
end.

Программа

uses crt,matrica;{подключаем модуль}
var a:matr;
    n,m:byte;
begin
clrscr;
randomize;
Vvod(a,n,m);
writeln('Исходная матрица:');
Vyvod(a,n,m);
Sort(a,n,m);
writeln('Результат перестановки:');
Vyvod(a,n,m);
readln
end.

Вариант 2

Программа

uses crt,matrix;
var a:mat;n,m,i,j:byte;
begin
clrscr;
write('N = ');
readln(n);
write('M = ');
readln(m);
for i:=1 to n do
for j:=1 to m do
read(a[i,j]);
sort(a,n,m);
for i:=1 to n do
begin
for j:=1 to m do
write(a[i,j],' ');
writeln;
end;
readkey;
end.

Программа

unit Matrix;
interface
type
mat = array[1..30,1..30]of integer;
procedure sort(var a:mat;b,c:byte);
implementation
procedure sort(var a:mat;b,c:byte);
var i,j,k:byte;temp:integer;
begin
for j:=1 to c do
for i:=1 to c-j do
if(a[1,i]>a[1,i+1])then
for k:=1 to b do
begin
temp:=a[k,i];
a[k,i]:=a[k,i+1];
a[k,i+1]:=temp;
end;
end;
end.

Leave a Comment

67 − 64 =