我目前正在尝试在Fortran 77中编写一个程序来计算文本文件中的单词数。文本文件如下所示:
你好世界。你好,世界。你好,世界。你好,世界。你好,世界。你好,世界。你好,世界。你好,世界。你好,世界。你好,世界。你好,世界。你好,世界。你好世界。
我的程序目前看起来像这样:
program COUNT
implicit none
character text*100000
integer i, a, nw
nw=1 !number of words
open(9, FILE='file.txt', STATUS='old')
read(9, '(A)') text
a=0
10 do i=1, LEN_TRIM(text)
if (text(i:i) .ne. " ") then
if (a .eq. 0) then
goto 10
else
a=0
nw=nw+1
goto 10
endif
else
if (a .eq. 0) then
a=a+1
goto 10
else
goto 10
endif
endif
enddo
print *, "Number of words: ", nw
end
我在纸上做了这个并且它应该可以工作,但是,我的程序被困在do循环中。我认为这可能与此陈述有关:
if (text(i:i) .ne. " ") then
我是否可以通过这种方式编写逻辑表达式?如果没有,有没有人有任何关于如何重写此代码的提示?如果我的程序有点乱,我很抱歉;我对此比较陌生。我正在努力提高我的编码技能,以进行计算化学。非常感谢你的帮助!
答案 0 :(得分:2)
所有if分支都转到goto 10
,它指向循环的开头。没有办法结束,因为这将从头开始重新启动循环。不要使用goto来启动新的迭代end do
。