Pascal - 过程调用中的数组参数

时间:2015-12-14 03:02:46

标签: arrays procedure freepascal

我有这个代码。我正在尝试计算我可以创造的最长的多米诺骨牌链我从未有超过16块石头。我使用阵列多米诺骨牌'整数来存储nubmers在石头上。当我尝试运行这个程序时,我在第25行遇到了SIGSEGV异常(我正在使用Lazarus IDE v1.4.4)。调用程序可能有些问题。谢谢你的帮助。

var n,maxDelka:integer;
type  dominoType = array[1..16,1..2] of integer;
var   domino:dominoType;
procedure NactiDomino;
var i:integer;
begin
read(n);
 for i:=1 to n do begin
         read(domino[i][1]);
         read(domino[i][2]);
 end;
end;

procedure VynulujDomino;
var i:integer;
begin
for i:=1 to 16 do begin
         domino[i][1]:= 0;
         domino[i][2]:= 0;
                 end;
maxDelka:=0;
end;
procedure RetezezDomino(VDomino:dominoType);
var i,y :integer;
begin //------------------here was the exception---------------------------
 for i:=1 to n do begin
     for y:=1 to n do begin
          if((VDomino[i][1]=VDomino[y][1])and(VDomino[i][1]<>-1))then begin VDomino[i][1]:= -1;VDomino[y][1]:= -1; RetezezDomino(VDomino); end
     else if((VDomino[i][1]=VDomino[y][2])and(VDomino[i][1]<>-1))then begin VDomino[i][1]:= -1;VDomino[y][1]:= -1; RetezezDomino(VDomino); end
     else if((VDomino[i][2]=VDomino[y][2])and(VDomino[i][2]<>-1))then begin VDomino[i][1]:= -1;VDomino[y][1]:= -1; RetezezDomino(VDomino); end;

     end;
 end;
inc(maxDelka);
end;



begin
  VynulujDomino;
  NactiDomino;
  writeln(maxDelka);
  RetezezDomino(domino);
  writeln(maxDelka);
end.

0 个答案:

没有答案