Fortran Coder

标题: 求助:if语句嵌套在循环语句内出现的问题 [打印本页]

作者: cdf5041353    时间: 2015-9-10 23:41
标题: 求助:if语句嵌套在循环语句内出现的问题
我的目的是将每行数据小于2的个数计算出来,在循环语句内嵌一个if判断语句,但是计算结果每行小于2的数据个数确是0,不知道问题出在哪,请指点一下迷津,感激不尽!
[Fortran] 纯文本查看 复制代码

PROGRAM PCM
implicit none
integer:: ndc=10,npc=231,i,j,m
real*8, allocatable ::opt_all(:,:)
allocate(opt_all(ndc,npc))

open(10,file="opt_all.txt")   !!!读取数据
do i=1,ndc
read(10,*)(opt_all(i,j),j=1,231)   
enddo
close(10)

do i=1,ndc
m=0
do j=1,npc
  if(opt_all(i,j)<2)then
  m=m+1
  endif
  enddo

print*,m
pause

enddo
END PROGRAM

opt_all.txt

14.03 KB, 下载次数: 4

原数据


作者: 楚香饭    时间: 2015-9-11 14:22
你的编译器不允许PAUSE语句吧。这个语句被废止了,建议用 read(*,*) 代替。
此外,可以用 count 简化你的代码

[Fortran] 纯文本查看 复制代码
Program pcm
  Implicit None
  Integer :: ndc = 10, npc = 231, i
  Real *8, Allocatable :: opt_all(:, :)
  Allocate (opt_all(ndc,npc))
  Open (10, File='opt_all.txt') ! !!读取数据
  Do i = 1, ndc
    Read (10, *) opt_all(i,:)
    write(*,*) count( opt_all(i,:)<2.0d0 )
    read(*,*)!PAUSE   
  End Do
  Close (10)
End Program pcm

作者: cdf5041353    时间: 2015-9-11 15:23
楚香饭 发表于 2015-9-11 14:22
你的编译器不允许PAUSE语句吧。这个语句被废止了,建议用 read(*,*) 代替。
此外,可以用 count 简化你的代 ...

感谢您的修正~但是按这个程序运行的结果仍然显示的是0,数据明明有小于2的情况,我也仔细检查了程序,不晓得问题出在哪,麻烦您再给看看是什么问题啊,感谢!!!
作者: fcode    时间: 2015-9-11 16:17
多按几下回车,后面就不是 0 了。前两行好像都是 0
作者: cdf5041353    时间: 2015-9-12 17:50
fcode 发表于 2015-9-11 16:17
多按几下回车,后面就不是 0 了。前两行好像都是 0

奥,我明白了,前几行是没有小于0的情况




欢迎光临 Fortran Coder (http://bbs.fcode.cn/) Powered by Discuz! X3.2