Code
uses crt;
var
hods : array[0..63] of byte;
make_hod : byte;
n : byte;
i : integer;
procedure outdat;
begin
gotoxy(1,1);
for i:= 0 to 63 do
begin
write(hods[i],' ');
if hods[i]<10 then write(' ');
if i mod 8=7 then writeln; end;
end;
procedure hod;
begin
inc(make_hod, 1);
if make_hod<64 then begin
hods[n] := make_hod;
if n>14 then
if (n mod 8<7) and (n div 8>1) and (hods[n - 15]= 0) then
begin n := n - 15; hod; n := n + 15; end;
if n>5 then
if (n mod 8<6) and (n div 8>0) and (hods[n - 6]= 0) then
begin n := n - 6; hod; n := n + 6; end;
if n<64 - 10 then
if (n mod 8<6) and (n div 8<7) and (hods[n + 10]= 0) then
begin n := n + 10; hod; n := n - 10; end;
if n<64 - 17 then
if (n mod 8<7) and (n div 8<6) and (hods[n + 17]= 0) then
begin n := n + 17; hod; n := n - 17; end;
if n<64 - 15 then
if (n mod 8>0) and (n div 8<6) and (hods[n + 15]= 0) then
begin n := n + 15; hod; n := n - 15; end;
if n<64 - 6 then
if (n mod 8>1) and (n div 8<7) and (hods[n + 6]= 0) then
begin n := n + 6; hod; n := n - 6; end;
if n>9 then
if (n mod 8>1) and (n div 8>0) and (hods[n - 10]= 0) then
begin n := n - 10; hod; n := n + 10; end;
if n>16 then
if (n mod 8>0) and (n div 8>1) and (hods[n - 17]= 0) then
begin n := n - 17; hod; n := n + 17; end;
end
else
begin
hods[N] := 64;
outdat;
gotoxy(1,10);
writeln('решение найдено');
outdat;
repeat until keypressed;
halt;
end;
hods[n] := 0; dec(make_hod);
end;
begin
clrscr;
gotoxy(1, 10);
writeln('Идет расчет');
n := 0;
make_hod := 0;
for i := 0 to 63 do hods[i] := 0;
hod;
repeat until keypressed;
end.
Program2.pas(10) : Переменная цикла for должна описываться в том же блоке, что и цикл for
что это значит?