Конечно, на основе функций решение было бы элегантнее, но требовались процедуры...// PascalABC.NET 3.2, сборка 1417 от 28.03.2017// Внимание! Если программа не работает, обновите версию!procedure GetMax(a:array[,] of integer; var mr,mc:array of integer);// максимумы по строкам mr и столбцам mcbegin mr:=a.Rows.Select(r->r.Max).ToArray; mc:=a.Cols.Select(c->c.Max).ToArray;end;procedure MatrSort(a:array[,] of integer);// сортировка срок по первой колонкеbegin for var i:=0 to a.RowCount-2 do for var k:=0 to a.RowCount-2-i do if a[k,0]>a[k+1,0] then a.SwapRows(k,k+1);end;procedure IsCont(n:integer; a:array [,] of integer; var res:boolean);// есть ли элемент n в массиве a?begin res:=a.ElementsByRow.Contains(n)end;begin var n:=ReadInteger('Количество строк в массиве:'); var m:=ReadInteger('Количество столбцов в массиве:'); Writeln('*** Исходный массив [',n,',',m,'] ***'); var a:=MatrRandom(n,m,-99,99); a.Println(4); Writeln(4*a.ColCount*'-'); var vr:=new integer[n]; var vc:=new integer[m]; GetMax(a,vr,vc); Write('Вектор максимумов по строкам: '); vr.Println; Write('Вектор максимумов по столбцам: '); vc.Println; MatrSort(a); Writeln('*** отсортированный массив ***'); a.Println(4); Writeln(4*a.ColCount*'-'); var k:=ReadInteger('Введите значение элемента для поиска:'); var q:boolean; IsCont(k,a,q); if q then Writeln('Массив содержит введенное значение') else Writeln('Массив не содержит введенного значения')end.
ПримерКоличество строк в массиве: 4Количество столбцов в массиве: 7*** Исходный массив [4,7] *** -96 63 6 -96 -21 -61 -54 31 -20 63 -48 70 13 48 72 -27 -68 -52 32 15 -58 -71 -86 45 49 40 -64 -2----------------------------Вектор максимумов по строкам: 63 70 72 49Вектор максимумов по столбцам: 72 63 63 49 70 15 48*** отсортированный массив *** -96 63 6 -96 -21 -61 -54 -71 -86 45 49 40 -64 -2 31 -20 63 -48 70 13 48 72 -27 -68 -52 32 15 -58----------------------------Введите значение элемента для поиска: 70Массив содержит введенное значение