const nm = 50; nn = 50;type Mas=array[1..nm,1..nn] of integer;procedure MatrixInit(var a:Mas;m,n,p,q:integer);{ Заполнение массива размером m*n целыми случайными числами из интервала [p;q] }var i,j,k:integer;begin k:=q-p+1; for i:=1 to m do for j:=1 to n do a[i,j]:=Random(k)-pend;procedure MatrixOutput(var a:Mas;m,n,k:integer);{ вывод элементов матрицы размера m*n в k позициях }var i,j:integer;begin for i:=1 to m do begin for j:=1 to n do Write(a[i,j]:k); Writeln endend;function IsFits(var a:Mas;m,col:integer):boolean;{ функция возвращает true, если колонка col явдяется "подходящей" }var i,max:integer; mv:real;begin max:=a[1,col]; mv:=max; for i:=2 to m do begin mv:=mv+a[i,col]; if max<a[i,col] then max:=a[i,col] end; mv:=mv/m; IsFits:=(max-mv>a[1,col])end;procedure ColumnReplace(var a:Mas;m,col:integer);{ Замена элементов столбца col единицами }var i:integer;begin for i:=1 to m do a[i,col]:=1end;var P: Mas; a,b,m,n,j,k:integer; flag:boolean;begin Randomize; Write('Введите количество строк и столбцов матрицы: '); Read(m,n); Write('Укажите минимальное и максимальной значение элементов: '); Read(a,b); Write('Укажите количество позиций для вывода значения элемента: '); Read(k); MatrixInit(P,m,n,a,b); Writeln('Исходный массив'); MatrixOutput(P,m,n,k); j:=1; repeat flag:=IsFits(P,m,j); if flag then begin ColumnReplace(P,m,j); Writeln('Результирующий массив'); MatrixOutput(P,m,n,k) end else Inc(j) until flag or (j>n); if not flag then Writeln('')end.
Тестовое решение:Введите количество строк и столбцов матрицы: 5 8Укажите минимальное и максимальной значение элементов: 0 20Укажите количество позиций для вывода значения элемента: 3Исходный массив 19 7 2 15 2 11 2 15 12 16 8 14 6 8 1 17 12 14 10 8 7 19 7 1 0 9 0 7 18 10 2 5 18 8 4 9 16 10 14 10Результирующий массив 19 7 1 15 2 11 2 15 12 16 1 14 6 8 1 17 12 14 1 8 7 19 7 1 0 9 1 7 18 10 2 5 18 8 1 9 16 10 14 10