回 帖 发 新 帖 刷新版面

主题:关于数组中存值的判断

初学fortran,现有一问题向大家求助。
有一组数(比如有20个),它们的值不是0就是1,储存在数组P(20)中,我想用一个循环进行判断,如果数组P中所存的值都是1,就把condition赋值为真,否者为假,请问该如何实现。我这些可以吗?
program test
implicit none
integer ::P(20)
logical ::condition
integer i

open (11,file='data.out',status='old')
do i=1,20
     read (11,*) P(i)
enddo
! 进行判断
do i=1,20
     if (P(i)==0) then
        go to 100
    else
        condition=true
   endif
enddo
100 continue 
-----
-----
end

回复列表 (共2个回复)

沙发


上面处理没有问题,但应该避免使用goto语句。
program test
implicit none
integer ::P(20)
logical ::condition
integer i

open (11,file='data.out',status='old')
do i=1,20
     read (11,*) P(i)
enddo
! 进行判断
condition=true
do i=1,20
     if (P(i)==0) then
        condition=false
        break
      endif
enddo
-----
-----
end

板凳

fortran有现成的函数,查查any,all的用法。你上面的循环可以简化为一条语句:

condition = all(p==1)

我来回复

您尚未登录,请登录后再回复。点此登录或注册