![]() |
|
|
#1
|
|||
|
|||
|
мой вариант работает только в массиве 8х8
![]() ![]() Код:
{$APPTYPE CONSOLE}
uses
SysUtils;
const N=8;
type mas=array[1..N,1..N] of integer;
var m:mas;
procedure Vvod(n:integer;var m:mas);
var i,j,k:integer;
begin k:=1;
for i:=1 to N do begin for j:=1 to 2 do begin m[i,j]:=k; k:=k+1;
end;
end;
for i:=1 to N do begin for j:=3 to 4 do begin m[i,j]:=k; k:=k+1;
end;
end;
for i:=1 to N do begin for j:=5 to 6 do begin m[i,j]:=k; k:=k+1;
end;
end;
for i:=1 to N do begin for j:=7 to 8 do begin m[i,j]:=k; k:=k+1;
end;
end;
end;
procedure Vivod(m:mas);
var i,j: integer;
begin
for i:=1 to N do
begin
for j:=1 to N do
write(m[i,j]:5,' ');
writeln;
end;
end;
begin
Vvod(n,m);
Vivod(m);
readln;
end.Последний раз редактировалось Asira, 27.12.2009 в 18:19. |
|
#2
|
|||
|
|||
|
интересная задачка)
Код:
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))... - на случай, если размеры массива будут не кратны двум) |