注册 登录
编程论坛 Delphi论坛

求救~!!!!!!!!!!!!!!循环问题

我要坚持 发布于 2008-05-13 16:31, 1134 次点击
function R1equR :boolean;
var i,j,t1,t2:integer;
begin
for i:=1 to n do
           for j:=1 to n do
           begin
           if rr[i,j]<>r[i,j] then r[i,j]:=rr[i,j]
                              else R1equR:=true;
           end;
end;

求救:下列运行会出现死循环,请高手帮我看看问题在哪?
谢谢!!!!!!!!!!!!!!!!!!!r矩阵是33阶的
begin
if  RadioButton45.Checked then     //传递闭包法
begin
for i:=1 to n do
    begin
     R[i,i]:=1; //修正错误
    end;
  js0:=0;
   while js0=1 do     //求传递闭包
    begin
    for i:=1 to n do
     for j:=1 to n do
       begin
         rr[i,j]:=0;
         temp:=0;
         for k:=1 to n do
           begin
            if r[i,k]<r[k,j]
            then temp:=r[i,k]
            else temp:=r[k,j];
             if rr[i,j]<temp
             then rr[i,j]:=temp;
             end;
             js0:=js0+1;
             end;
    if r1equr then break; //跳出WHIEL 循环
end;
6 回复
#2
xu20002008-05-14 08:27
太复杂了,懒的看,你还是单步调试看一下吧。
#3
volte2008-05-14 14:53
很明显,你是死循环,你看下你的
while js0 = 1 do
begin
  for i := 1 to n do
  begin
    for j := 1 to n do
    begin
      for k := 1 do n do
      begin
      end
      js0 := js0 + 1;     
    end;
  end;
end;

看到问题了吧,就是出在你的循环上面,
程序没上手,就不要省略begin..end;这样 让人一目了然,很直观!
#4
我要坚持2008-05-14 16:15
我按楼上的改的,但是还是不行,觉得自己算法没什么问题
请高手们指点下!!!!!!!
#5
我要坚持2008-05-14 16:19
#6
volte2008-05-15 15:47
你估计还是个学生吧,
怎么看问题都不看,就说是按我的改,
我压根都没给你改过,只是指出你的错误原因,
你自己看看你提供的程序,又是少end,又是写代码不规范!
你看下你的最后js0的逻辑值就知道出在哪里了,晕!
不看我说的话就照抄,我什么时候提供你正确答案了!
我好象还从来没给别人提供正确答案。
1