Работать с указателями.
вот код
program test2;
uses crt;
const
n=3;
m=3;
var
a:array [1..n,1..n] of integer;
i,j:integer;
procedure SumEl (pa:pointer;n,m:integer);
type
pint= ^integer;
var
si,i,j,k:integer;
function PR(P:pointer):pint;
begin
PR:=ptr(seg(p^),ofs(p^)+(I*n+j)*SI);
end;
begin
k:=0;
si:=sizeof(integer);
for i:=1 to n do
for j:=1 to m do
begin
if i>j then
k:=k+pr(pa)^;
end;
writeln('Summa elementov nije gl. diagonali = ',k);
end;
begin
clrscr;
writeln('Vvedite massiv');
for i:=1 to n do
for j:=1 to m do
begin
write('A[',i,j,']=');
read(a[i,j]);
end;
writeln('Vash massiv');
for i:=1 to n do
begin
for j:=1 to m do
write(a[i,j],' ');
writeln;
end;
SumEl(@a,n,m);
readkey;
end.
Вот результаты выполнения :
A[11]=1
A[12]=2
A[13]=3
A[21]=4
A[22]=5
A[23]=6
A[31]=7
A[32]=8
A[33]=9
Vash massiv
1 2 3
4 5 6
7 8 9
Summa elementov nije gl. diagonali = 12
Видимо по памяти слишком далеко шагаю...