Создать матрицы А[n*m] и В[n*m]. Если элемент матрицы на главной диагонали > 0, то эту строку рассортировать по возрастанию, обращаясь к процедуре сортировки одномерного массива (т.е. строки матрицы), иначе определить минимальное в строке с помощью функции и поменять местами числа на главной диагонали с минимальным — Pascal(Паскаль)

uses crt;
type mas= array [1..20] of integer;//строка матрицы
     matr= array[1..20] of mas;//массив строк=матрица
procedure SozdMtr (var d:matr;var x:byte;c:char);
var i,j:byte;
begin
writeln('Matrica ',c);
write('Razmer=');readln(x);
for  i:=1 to x do
for j:=1 to x do
d[i,j]:=random(100)-40;
end;
procedure VyvMtr (var d:matr;x:byte);
var i,j:byte;
begin
for  i:=1 to x do
 begin
  for j:=1 to x do
  write(d[i,j]:5);
  writeln;
 end;
end;
procedure SortStr(var v:mas;x:byte);//сортировка строки
var i,j:byte;
    c:integer;
begin
for i:=1 to x-1 do
for j:=i+1 to x do
if v[i]>v[j] then
  begin
   c:=v[i];
   v[i]:=v[j];
   v[j]:=c;
  end;
end;
 
function Min(v:mas;x:byte):byte;//номер минимального в строке
var i,im:byte;
begin
im:=1;
for i:=1 to x do
if v[i]<v[im] then im:=i;
Min:=im;
end;
procedure Result(var d:matr;x:byte);//обработка матрицы
var i,j:byte;
    c:integer;
begin
for i:=1 to x do
if d[i,i]>0 then SortStr(d[i],x)//первое условие, сортировка
else if d[i,i]<=0 then//второе условие, обмен
 begin
  c:=d[i,i];
  d[i,i]:=d[i,Min(d[i],x)];
  d[i,Min(d[i],x)]:=c;
 end;
end;
var a,b:matr;
    n,m,i,j:byte;
    c:integer;
BEGIN
clrscr;
randomize;
SozdMtr(a,n,'A');
writeln('Ishodnaya matrica A:');
VyvMtr(a,n);
Result(a,n);
writeln('Izmenennaya matrica A:');
VyvMtr(a,n);
SozdMtr(b,m,'B');
writeln('Ishodnaya matrica B:');
VyvMtr(b,m);
Result(b,m);
writeln('Izmenennaya matrica B:');
VyvMtr(b,m);
readln
end.

Leave a Comment

18 + = 25