楚香饭 发表于 2014-11-28 17:26 非常感谢你的耐心指导 初学fortran,想知道fortran可不可以统计一个文本中各个单词出现的次数····我编这个程序主要是为了这个目的,我的思路是先统计出文本总共的词数,不知道思路对不对··· 希望大师提点一下,万分感谢了 |
|
本帖最后由 楚香饭 于 2014-11-28 17:28 编辑 你这代码问题太多了。语法错误一大堆,算法也不正确。 建议你直接使用这个代码:http://fcode.cn/code_gen-34-1.html 获取文件的行数和列数,每行的列数相加即可。 针对你的代码,我做了一些语法上的纠正。(算法就不纠正了,思路不对。) 最后,排版很重要、很重要、很重要、很重要 [Fortran] syntaxhighlighter_viewsource syntaxhighlighter_copycode module constant
implicit none
integer n,nmax,cnum
character(*):: filename
character*1 sign
integer count
integer error
end module constant
module dealfile
use constant
contains
subroutine totalnum(filename,count,nmax,sign,cnum())
integer count,nmax,i,n,tonum
character*1 buffer(1:nmax)
character(*):: filename
character*1 sign
character,allocatable :: string(:)
integer,allocatable :: cnum(:)
open(10,FILE=filename)
allocate(string(n))
allocate(cnum(n))
do n=1,count
READ(10,100) string(n)
100 format(<nmax>A1)
write(*,*)string(n)
buffer=string(n)
cnum(1)=1
do i=1,nmax-1
if((buffer(i)==sign) .AND. (buffer(i+1)/=sign)) cnum(n)=cnum(n)+1
end do
tonum=tonum+cnum(n)
end do
close(10)
end subroutine totalnum
end module dealfile
program main
use constant
use dealfile
print*,'文件名:'
read*,filename
count=0
open(10,file=filename,status='old')
do while (.true.)
read(10,*,iostat=error) line
if(error/=0)exit
count=count+1
end do
close(10)
print*,'行数:'
write(*,*)count
print*,'行的最大列数:'
read*,nmax
print*,'分隔符:'
read(*,100),sign
100 format(A1)
call totalnum(filename,count,nmax,sign,cnum(n))
print*,tonum
end program |
捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )
GMT+8, 2025-10-28 14:06