uses crt; const nmax=20; var a:array[1..nmax,1..nmax] of integer; n,i,j,k,imx:byte; mx:integer; begin clrscr; randomize; repeat write('Размер матрицы='); readln(n); until n in [1..nmax]; writeln('Исходная матрица:'); for i:=1 to n do begin for j:=1 to n do begin a[i,j]:=random(40)+10; write(a[i,j]:4); end; writeln; end; writeln; for j:=1 to n do begin mx:=a[1,j]; imx:=1; for i:=1 to n do if a[i,j]>mx then begin mx:=a[i,j];{находим максимальный в столбце} imx:=i;{номер строки с ним} end; for k:=1 to n do if (k<>j)then a[imx,k]:=0;{обнуляем строку кроме макс.} end; writeln; writeln('Матрица оптимальной производительности:'); for i:=1 to n do begin for j:=1 to n do write(a[i,j]:4); writeln; end; writeln; writeln('Распредеделение работников по станкам:'); for i:=1 to n do begin write('Работник ',i:2,' на станке '); for j:=1 to n do if a[i,j]>0 then writeln(j:2); end; readln end.