интересная задачка)
Код:
procedure VVod(var m:mas);
var
FColIndex,
FIndex,
r, c:Integer;
begin
FIndex:=1;
FColIndex:=Low(m);
while FColIndex <= High(m) do
begin
for r:=Low(m[Low(m)]) to high(m[Low(m)]) do
for c:=FColIndex to (FColIndex+1-ord(FColIndex+1 > High(m))) do
begin
m[r,c]:=FIndex;
Inc(FIndex);
end;
Inc(FColIndex, 2);
end;
end;
...-(ord(FColIndex+1 > High(m))... - на случай, если размеры массива будут не кратны двум)