楚香饭 发表于 2014-11-28 17:26 非常感谢你的耐心指导 初学fortran,想知道fortran可不可以统计一个文本中各个单词出现的次数····我编这个程序主要是为了这个目的,我的思路是先统计出文本总共的词数,不知道思路对不对···希望大师提点一下,万分感谢了 |
本帖最后由 楚香饭 于 2014-11-28 17:28 编辑 你这代码问题太多了。语法错误一大堆,算法也不正确。 建议你直接使用这个代码:http://fcode.cn/code_gen-34-1.html 获取文件的行数和列数,每行的列数相加即可。 针对你的代码,我做了一些语法上的纠正。(算法就不纠正了,思路不对。) 最后,排版很重要、很重要、很重要、很重要 [Fortran] 纯文本查看 复制代码 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, 2024-12-24 02:59