24小时热门版块排行榜    

查看: 440  |  回复: 1

小丫鸭

铁虫 (初入文坛)

[求助] fortran 中DOwhile的失效问题 已有1人参与

我的程序中有这样一段 但是不知怎么回事,当Y0(2)大于等于1.0时它不进入DO WHILE的循环 很是郁闷 有知道的可以帮忙解决下吗
j=1
      p=P_exp
        write(*,*) "p_exp = ", p
        err1=5.0e-2
        err2=8.0e-2
      yn(1)=P_exp
        yn(2)=y(1)
        i=0
35    j=j+1      
      r=1.0
        call Adf(z,x,y,T,P,AA)

        write(*,*) AA(1,3), AA(2,3)

        call GAUSS(2,1,AA)
      y0(1)=yn(1)-r*AA(1,3)
        y0(2)=yn(2)-R*AA(2,3)
c        write(*,*)'y0(2)',y0(2)
       do 36, while(((Y0(1).le.0.0).or.(Y0(2).le.0.0).or.(Y0(2).ge.1.0))
     &        .and.(i.lt.10))
         
        i=i+1       
        R = R/10.0
        Y0(1) = yn(1)- R*AA(1,3)
        Y0(2) = yn(2)- R*AA(2,3)
36        continue
       k=0
       do 37, while(Y0(2).ge.1.0)
        k=k+1
      R0 = R/10.0
        Y0(2) = yn(2)- R0*AA(2,3)
37        continue
      write(*,*)'y0(2)',y0(2)


        yn(1)=y0(1)
        yn(2)=y0(2)
        y(1)=yn(2)
        y(2)= 1-yn(2)
        P = yn(1)
        write(*,*) "i =", i, "p = ", P,AA(1,3)/yn(1),AA(2,3)/yn(2)
        if(  (abs(AA(1,3)/yn(1)).gt.ERR1)
     &         .or.(abs(AA(2,3)/yn(2)).gt.ERR2)  )  goto 35


        call AROL(z,x,T,RO_l,p)
      call AROV(z,y,T,RO_v,p)
      P_cal = P
        rou1_l=ro_l
        rou1_v=ro_v
      write(*,*) "P=",P_cal,"Y(1)=" ,y(1)
      write(*,*) "rou_cal = ",ro_l,ro_V
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

snoopyzhao

至尊木虫 (职业作家)

【答案】应助回帖

你还要看  (i.lt.10) 的返回值是什么,因为它之前是 .and.

所以,你的 y0(2) 那个即使是 .TRUE. 但 i.lt.10 返回 .FALSE. 那么上述 while 就是 .FALSE.
2楼2015-06-22 08:53:29
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 小丫鸭 的主题更新
信息提示
请填处理意见