// PascalABC.NET 3.0, сборка 1160 от 05.02.2016 procedure MatrixPrint(a:array[,] of integer); begin for var i:=0 to Length(a,0)-1 do begin for var j:=0 to Length(a,1)-1 do Print(a[i,j]); Println end end;
function RowSum(a:array[,] of integer):array of integer; // суммы построчно begin SetLength(Result,Length(a,0)); for var i:=0 to Length(a,0)-1 do begin var s:=0; for var j:=0 to Length(a,1)-1 do s+=a[i,j]; Result[i]:=s end end;
function ColSum(a:array[,] of integer):array of integer; // суммы по столбцам begin SetLength(Result,Length(a,1)); for var j:=0 to Length(a,1)-1 do begin var s:=0; for var i:=0 to Length(a,0)-1 do s+=a[i,j]; Result[j]:=s end end;
begin var n:=ReadInteger('N='); var m:=ReadInteger('M='); var x:=MatrixRandom(n,m,1,5); Writeln('Исходный массив'); MatrixPrint(x); var srow:=RowSum(x); var ir:=0; for var i:=1 to srow.Length-1 do if srow[i]>srow[ir] then ir:=i; WritelnFormat('Максимум {0} в строке {1}',srow[ir],ir+1); var scol:=ColSum(x); var ic:=0; for var i:=1 to scol.Length-1 do if scol[i]<scol[ic] then ic:=i; WritelnFormat('Минимум {0} в колонке {1}',scol[ic],ic+1) end.
Const n = 5; m = 5; var a: array[0..n, 0..m] of integer; i, j, imin, jmax: integer; begin writeln('Матрица: '); for i := 1 to n do begin for j := 1 to m do begin a[i, j] := Random(5) + 1; a[0, j] := a[0, j] + a[i, j]; a[i, 0] := a[i, 0] + a[i, j]; write(a[i, j] : 3); end; writeln; end; jmax := 1; for i := 2 to n do if a[i, 0] > a[jmax, 0] then jmax := i; imin := 1; for j := 2 to m do if a[0, j] < a[0, imin] then imin := j; writeln('Номер столбца: ', imin); writeln('Номер строки: ', jmax); end.
procedure MatrixPrint(a:array[,] of integer);
begin
for var i:=0 to Length(a,0)-1 do begin
for var j:=0 to Length(a,1)-1 do Print(a[i,j]);
Println
end
end;
function RowSum(a:array[,] of integer):array of integer;
// суммы построчно
begin
SetLength(Result,Length(a,0));
for var i:=0 to Length(a,0)-1 do begin
var s:=0;
for var j:=0 to Length(a,1)-1 do
s+=a[i,j];
Result[i]:=s
end
end;
function ColSum(a:array[,] of integer):array of integer;
// суммы по столбцам
begin
SetLength(Result,Length(a,1));
for var j:=0 to Length(a,1)-1 do begin
var s:=0;
for var i:=0 to Length(a,0)-1 do
s+=a[i,j];
Result[j]:=s
end
end;
begin
var n:=ReadInteger('N=');
var m:=ReadInteger('M=');
var x:=MatrixRandom(n,m,1,5);
Writeln('Исходный массив');
MatrixPrint(x);
var srow:=RowSum(x);
var ir:=0;
for var i:=1 to srow.Length-1 do
if srow[i]>srow[ir] then ir:=i;
WritelnFormat('Максимум {0} в строке {1}',srow[ir],ir+1);
var scol:=ColSum(x);
var ic:=0;
for var i:=1 to scol.Length-1 do
if scol[i]<scol[ic] then ic:=i;
WritelnFormat('Минимум {0} в колонке {1}',scol[ic],ic+1)
end.
Тестовое решение:
N= 8
M= 5
Исходный массив
3 3 3 2 4
2 4 2 2 1
1 1 2 4 5
5 1 4 1 5
4 2 3 3 4
2 3 2 4 2
5 3 4 1 1
4 3 4 4 2
Максимум 17 в строке 8
Минимум 20 в колонке 2
n = 5;
m = 5;
var
a: array[0..n, 0..m] of integer;
i, j, imin, jmax: integer;
begin
writeln('Матрица: ');
for i := 1 to n do
begin
for j := 1 to m do
begin
a[i, j] := Random(5) + 1;
a[0, j] := a[0, j] + a[i, j];
a[i, 0] := a[i, 0] + a[i, j];
write(a[i, j] : 3);
end;
writeln;
end;
jmax := 1;
for i := 2 to n do
if a[i, 0] > a[jmax, 0] then
jmax := i;
imin := 1;
for j := 2 to m do
if a[0, j] < a[0, imin] then
imin := j;
writeln('Номер столбца: ', imin);
writeln('Номер строки: ', jmax);
end.