狂ft,FP的问题

暴郁闷ing
用FP1.0.10版本
比较稳定,调试还行

可是偏偏碰上一个头疼的问题:
我的程序,虽说暴垃圾的,不过唯一的好处还是可阅读,同济1021(我菜鸟就是菜):
Code:

Type
 node=Record
     x,y,p:Byte;
    End;

Var
 dat:Array[1..10000]Of node;
 Map:Array[0..76,0..76]Of Boolean;
 n,Ti,h,w:Byte;

Procedure Init;
 Var
  ii,ik:Byte;
  Stin:String;
 Begin
  FillChar(map,SizeOf(map),True);
  ReadLn(w,h);
  For ii:=1 To h Do
   Begin
    ReadLn(Stin);
    For ik:=1 To w Do
     If Stin[ik]=’X’
      Then map[ii,ik]:=False;
   End;
 End;

Procedure Work;
 Var
  Visted:Array[0..76,0..76]Of Boolean;
  xo,yo:ShortInt;
  Tmp:ShortInt;
  Head,Top:Word;
  found:Boolean;

 Function Adin(xd,xf:Byte;change:ShortInt):Boolean;
  Begin
   If Not Map[xd,xf]
    Then If(xd=yo)And(xf=xo)
        Then Begin
           WriteLn(dat[head].p+1);
           found:=True;
           Exit(False);
          End
    Else Exit(False);
   Inc(Tmp,change);
   If Visted[xd,xf] Then Exit(True);
   Inc(Top);
   dat[Top].x:=xd;
   dat[Top].y:=xf;
   dat[Top].p:=dat[head].p+1;
   Visted[xd,xf]:=True;
  End;

 Begin
  dat[1].x:=1;
  ReadLn(dat[1].y,dat[1].x,xo,yo);
  While(dat[1].x<>0)Do
   Begin
    Head:=1;
    Top:=head;
    Visted[dat[1].x,dat[1].y]:=True;
    Repeat
     If map[dat[1].x,dat[1].y]Or map[yo,xo]
      Then Begin
          WriteLn(0);
          found:=True;
          Break;
         End;
     Tmp:=dat[head].x-1;
     While(Tmp>=0)And (Not found)Do If Not Adin(Tmp,dat[head].y,-1) Then Break;
     Tmp:=dat[head].x+1;
     While(Tmp<=h+1)And (Not found)Do If Not Adin(Tmp,dat[head].y,1) Then Break;
     Tmp:=dat[head].y-1;
     While(Tmp>=0)And (Not found)Do If Not Adin(dat[head].x,Tmp,-1) Then Break;
     Tmp:=dat[head].y+1;
     While(Tmp<=w+1)And (Not found)Do If Not Adin(dat[head].x,Tmp,1) Then Break;
     Inc(head);
    Until (found Or (Head>Top));
    If Not found Then WriteLn(0);
    found:=False;
    FillChar(Visted,SizeOf(Visted),False);
    FillChar(dat,10000,0);
    ReadLn(dat[1].y,dat[1].x,xo,yo);
   End;
 End;

Begin
 ReadLn(n);
 For Ti:= 1 To n Do
  Begin
   Init;
   Work;
  End;
End.

可是输出:
■ Free Pascal IDE Version 0.9.2
1
5 4
XXXXX
X  X
XXX X
XXX
2 3 5 3
4
1 3 4 4
3
0 0 0 0//以上是调试时的输出
1
5 4
XXXXX
X  X
XXX X
XXX
2 3 5 3
5
1 3 4 4
5
0 0 0 0//以上是运行的输出

头疼啊,两次输出答案不一样!我….我用FP2.1.1版本编译出来的输出结构却是:
0
4
0
我检查我的程序头都疼咯,虽说我的程序可能错咯
可是也不能错到调试的输出和运行的输出不一样啊!

发布者:巫山霏云

巫山霏云,87年生巨蟹,文科生,IT男,喜读书,不求甚解,

留下评论

您的电子邮箱地址不会被公开。

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据