<em>// PascalABC.NET 3.2, сборка 1449 от 23.05.2017</em> <em>// Внимание! Если программа не работает, обновите версию!</em>
begin var n:=ReadInteger('Количество строк/столбцов в матрице:'); Writeln('*** Исходная матрица [',n,',',n,'] ***'); var a:=MatrRandom(n,n,-99,99); a.Println(4); Writeln(4*a.ColCount*'-'); Writeln('S=',a.ElementsWithIndexes .Where(y->(y[0]>=a.RowCount div 2) and (y[1]>=a.ColCount div 2)) .Select(y->y[2]).Sum) end.
<em>Если не устраивают лямбда-выражения, а нужна именно функция, можно написать так:</em>
type Mat=array[,] of integer;
begin var n:=ReadInteger('Количество строк/столбцов в матрице:'); Writeln('*** Исходная матрица [',n,',',n,'] ***'); var a:Mat:=MatrRandom(n,n,-99,99); a.Println(4); Writeln(4*a.ColCount*'-'); var PartSum:Mat->integer; PartSum:=x->x.ElementsWithIndexes .Where(y->(y[0]>=x.RowCount div 2) and (y[1]>=x.ColCount div 2)) .Select(y->y[2]).Sum; Writeln('S=',PartSum(a)) end.
program massiv; var i,n,max,sr,min,pozm,pozx:longint; a:array[1..10]of longint; begin for i:=1 to 10 do read(a[i]); for i:=1 to 10 do begin if a[i]>max then begin max:=a[i]; pozm:=i; end; if a[i]<min then begin max:=a[i]; pozx:=i; end; end; for i:= pozx+1 to pozm-1 do sr:=sr+a[i]; sr:=sr div (pozm-pozx); writeln(sr); end.
Program gt; var a:array[1..12]of integer; n,i,max:integer; begin randomize; for i:=1 to 12 do begin a[i]:=random(100)-50; write(a[i],' '); end; writeln; write(a[2],' ',a[3],' ',a[4],' ',a[9],' ',a[12],' '); max:=a[1]; for i:=2 to 12 do begin if(a[i]>max)then max:=a[i]; end; writeln(max); end.