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

uses crt;
const n=6;{размер матрицы}
type Tmas=array [1..n] of integer;{тип линейный массив}
     Tmatr=array [1..n] of Tmas; {тип массив линейных массивовЮ или матрица}
procedure Vvod(s:char;var m:Tmatr);{ввод матрицы, s - индекс матрицы}
var i,j:byte;
begin
writeln('Ishodnaya matrica ',s,':');{вместо s вставим А или В}
for i:=1 to n do
  begin
    for j:=1 to n do
      begin
        m[i,j]:=random(20)-9;
        write(m[i,j]:4);
      end;
    writeln;
  end;
end;
procedure Vyvod(x1,y1,x2,y2,c1,c2:byte;s:char;var m:Tmatr);
{вывод в окно, х,у-координаты окна, с-цвет фона и шрифта, s-тоже что и при вводе}
var i,j:byte;
begin
window(x1,y1,x2,y2);{окно}
TextBackGround(c1);{фон}
TextColor(c2); {шрифт}
writeln('  Rezultat po matrice ',s,':');
for i:=1 to n do
  begin
    for j:=1 to n do
    write(m[i,j]:4);
    writeln;
  end;
end;
procedure Sort(x:byte;var ms:Tmas );{сортировка одномерного массива пузырьком по возрастанию}
var j,k:byte;
    f:integer;
begin
for j:=1 to n-1 do
for k:=j+1 to n do
if ms[j]>ms[k] then
  begin
    f:=ms[j];
    ms[j]:=ms[k];
    ms[k]:=f;
  end;
end;
procedure Min(x:byte;var ms:Tmas);{процедура поиска мин в строке и обмена его с эл. гл. диаг.}
var j,jmin:byte;
    min,f:integer;
begin
min:=ms[1];jmin:=1;
for j:=1 to n do
if ms[j]<min then
  begin
    min:=ms[j];{находим мин.}
    jmin:=j; {запоминаем его номер}
  end;
f:=ms[jmin]; {мкняем местами через буфер}
ms[jmin]:=ms[x];
ms[x]:=f;
end;
var a,b:Tmatr;{раздел переменных программы}
    i,j:byte;
begin {начало программы}
TextMode(2);{устанавливаем активное окно}
randomize;
TextBackGround(7);{фон}
TextColor(0);{цвет шрифта}
Vvod('A',a);{ввод матрицы А}
writeln;
Vvod('B',b);{В}
for i:=1 to n do
if a[i,i]>0 then Sort(i,a[i]){если эл-т гл. диаг. отрицательный, сортируем}
else Min(i,a[i]); {если нет - ищем и переставляем минимум}
Vyvod(40,1,64,8,14,4,'A',a);{вывод результата в новое окно}
for i:=1 to n do
if b[i,i]>0 then Sort(i,b[i]){тоже с матрицей В}
else Min(i,b[i]);
Vyvod(40,9,64,16,3,10,'B',b);
readln
end.

Leave a Comment

+ 20 = 21