| 查看: 892 | 回复: 24 | |||
| 当前主题已经存档。 | |||
| 当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖 | |||
[交流]
【求助】新手求助,不知道文件中数据有多少行怎么半?
|
|||
|
新手求助!! 我要写一段程序,读取文件中的每一行数据,调用子程序进行计算,可是我并不知道这个文件有多少行,这段程序应该怎么写,请大家帮忙... program main implicit none integer i, nrow ! nrow是文件的行数 character*10 atomname open(1,file='co2.gro',status='unknown') do i=1, nrow !读取文件中的每一行数据,可是我并不知道这个nrow的具体数值. read(1,*) atomname,x(i),y(i),z(i) if (atomname .eq. 'cb') then call sub(x(i),y(i),z(i)) 请大家帮忙,另外我想读取每一行数据后,调用子程序进行运算,我想知道把文件中的每一行数值赋值给子程序sub(x,y,z),像我这样写可以吗?? |
» 猜你喜欢
实验室接单子
已经有3人回复
要不要辞职读博?
已经有5人回复
不自信的我
已经有10人回复
磺酰氟产物,毕不了业了!
已经有8人回复
求助:我三月中下旬出站,青基依托单位怎么办?
已经有10人回复
26申博(荧光探针方向,有机合成)
已经有4人回复
论文终于录用啦!满足毕业条件了
已经有26人回复
2026年机械制造与材料应用国际会议 (ICMMMA 2026)
已经有4人回复
Cas 72-43-5需要30g,定制合成,能接单的留言
已经有8人回复
北京211副教授,35岁,想重新出发,去国外做博后,怎么样?
已经有8人回复

tjyl
金虫 (正式写手)
- 程序强帖: 2
- 应助: 0 (幼儿园)
- 金币: 3218.1
- 红花: 2
- 帖子: 576
- 在线: 156.6小时
- 虫号: 765184
- 注册: 2009-05-07
- 专业: 生物无机化学
- 管辖: 程序语言
★ ★ ★ ★ ★ ★
小木虫(金币+0.5):给个红包,谢谢回帖交流
nono2009(金币+5,VIP+0):向你学习! 11-19 23:14
小木虫(金币+0.5):给个红包,谢谢回帖交流
nono2009(金币+5,VIP+0):向你学习! 11-19 23:14
|
按照你的格式改写好了 用你发的数据测试了一下是可以的。 其实本来根本就不用去操心有多少行的,因为你只是为了计算总和。 直接按照前面的那样只判断到文件末没有就可以了。 这样改写只是为了随便试试而已。如果只是关心总和也不用去计算到底多少行。 使用了eof函数,intel编译器可以。CVF不大清楚,没有安装。 如果不行的话就使用前面说的read的IOSTAT来判断到行末没有。 ================== 这个是会计算行数,然后再分配空间的 ================= program read_data implicit none real*8 ljcc,vicc real*8,external :: cljinteraction real*8,allocatable :: x(: ),y(: ),z(: ) character*5,allocatable :: atomname(: ) integer*4 row,i row=0 open(32,file='co2ben.txt') do while (.not. eof(32)) row=row+1 read(32,*) end do rewind(32) allocate(x(row),y(row),z(row),atomname(row)) vicc=0.0 do i=1, row read(32,*) atomname(i),x(i),y(i),z(i) if (atomname(i) .eq. 'Cb') then !如果原子是Cb,就调用下面函数 ljcc=cljinteraction(x(i),y(i),z(i)) vicc=vicc+ljcc !累加函数数值 endif enddo write(6,*) vicc !输出函数数值的总和 deallocate(x,y,z,atomname) end program function cljinteraction(x,y,z) implicit none real*8 cljinteraction real*8 x,y,z !输入变量 real*8 ri2c, sr2c, sr6c, sr12c !中间使用量 ri2c=(x-3.08)**2+(y-3.37)**2+(z-3.129)**2 sr2c=0.32535/ri2c sr6c=sr2c*sr2c*sr2c sr12c=sr6c**2 cljinteraction=sr12c-sr6c return end function =================== 这个就是只计算这个结果的版本 ==================== program read_data implicit none real*8 ljcc,vicc real*8,external :: cljinteraction real*8 x,y,z character*5 atomname vicc=0.0 open(32,file='co2ben.txt') do while (.not. eof(32)) read(32,*) atomname,x,y,z if (atomname .eq. 'Cb') then !如果原子是Cb,就调用下面函数 ljcc=cljinteraction(x,y,z) vicc=vicc+ljcc !累加函数数值 endif enddo write(6,*) vicc !输出函数数值的总和 end program function cljinteraction(x,y,z) implicit none real*8 cljinteraction real*8 x,y,z !输入变量 real*8 ri2c, sr2c, sr6c, sr12c !中间使用量 ri2c=(x-3.08)**2+(y-3.37)**2+(z-3.129)**2 sr2c=0.32535/ri2c sr6c=sr2c*sr2c*sr2c sr12c=sr6c**2 cljinteraction=sr12c-sr6c return end function [ Last edited by tjyl on 2009-11-19 at 22:37 ] |
24楼2009-11-19 22:25:34
maomao1210
金虫 (正式写手)
- 程序强帖: 5
- 应助: 2 (幼儿园)
- 金币: 1431.3
- 散金: 242
- 红花: 16
- 沙发: 1
- 帖子: 991
- 在线: 441.5小时
- 虫号: 253215
- 注册: 2006-05-20
- 性别: MM
- 专业: 考古理论
2楼2009-11-17 16:19:06

4楼2009-11-17 17:02:53
maomao1210
金虫 (正式写手)
- 程序强帖: 5
- 应助: 2 (幼儿园)
- 金币: 1431.3
- 散金: 242
- 红花: 16
- 沙发: 1
- 帖子: 991
- 在线: 441.5小时
- 虫号: 253215
- 注册: 2006-05-20
- 性别: MM
- 专业: 考古理论
5楼2009-11-17 19:35:32












回复此楼