Дана матрица размером N*M.Расставить строки матрицы в порядке возрастания их первых элементов — Pascal(Паскаль)

uses crt;
const n=10;
      m=10;
var a:array[1..n,1..m] of integer;
    i,j,k:byte;
    x:integer;
begin
clrscr;
randomize;
writeln('Исходная матрица:');
for i:=1 to n do
 begin
  for j:=1 to m do
   begin
    a[i,j]:=random(41)+10;
    write(a[i,j]:4);
   end;
  writeln;
 end;
writeln;
for i:=1 to n-1 do
for k:=i+1 to n do
if a[i,1]>a[k,1] then
for j:=1 to m do
 begin
  x:=a[i,j];
  a[i,j]:=a[k,j];
  a[k,j]:=x;
 end;
writeln('Перестановка:');
for i:=1 to n do
 begin
  for j:=1 to m do
  write(a[i,j]:4);
  writeln;
 end;
readln
end.

Вариант 2

uses crt;
const n=5; m=4;
var a:array[1..n,1..m]of integer;
i,j,s:integer;
 
procedure swap(n1,n2:integer);
var j,b:integer;
begin
 for j:=1 to m do
 begin
  b:=a[n1,j];
  a[n1,j]:=a[n2,j];
  a[n2,j]:=b;
 end;
end;
 
begin
 clrscr;
 randomize;
 writeln('Исходный массив');
 for i:=1 to n do
 begin 
  for j:=1 to m do
  begin
    a[i,j]:=random(100);
    write(a[i,j]:3);
  end;
  writeln;
 end;
 
 for i:=1 to n do
 for j:=1 to n-1 do if a[j,1]>a[j+1,1] then swap(j,j+1);
 
 writeln('Преобразованный массив');
 for i:=1 to n do
 begin
  for j:=1 to m do write(a[i,j]:3);
  writeln;
 end;
 readln;
end.

Leave a Comment

47 − = 40