// PascalABC.NET 3.2, сборка 1437 от 03.05.2017// Внимание! Если программа не работает, обновите версию!function GetDiagNeganives(a:array[,] of integer):sequence of integer;begin for var i:=0 to a.RowCount-1 do if a[i,i]<0 then yield(i)end;function GetSumm(a:array[,] of integer; t:sequence of integer):integer;begin Result:=0; foreach var e in t do Result+=a.Row(e).Sumend;procedure MatrixWrite(a:array[,] of integer);begin var n:=a.RowCount; Writeln('*** Исходная матрица [',n,',',n,'] ***'); a.Println(4); Writeln(4*a.ColCount*'-')end;begin var n:=ReadInteger('Количество строк/столбцов в матрице:'); var a:=MatrRandom(n,n,-99,99); MatrixWrite(a); var s:=GetDiagNeganives(a); Writeln('S=',GetSumm(a,s))end.
ПримерКоличество строк/столбцов в матрице: 5*** Исходная матрица [5,5] *** -31 -1 -29 -69 -19 -83 84 52 42 52 13 -24 -70 98 -33 60 -94 -84 19 -14 -55 81 -36 57 98--------------------S=-165