24小时热门版块排行榜    

Znn3bq.jpeg
查看: 1169  |  回复: 24
当前主题已经存档。

nono2009

超级版主 (文学泰斗)

No gains, no pains.

优秀区长优秀区长优秀区长优秀区长优秀版主


小木虫(金币+0.5):给个红包,谢谢回帖交流
1. 看你的计算目的,其实就没必要用数组x,y,z。
2. compile可以后,试试单步执行查错。
21楼2009-11-19 21:55:56
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

tjyl

金虫 (正式写手)

★ ★ ★
小木虫(金币+0.5):给个红包,谢谢回帖交流
nono2009(金币+2,VIP+0):谢谢!专家真是尽心尽力,对活动是不为所动。呵呵 11-19 22:10
自己用比较笨的办法来计算行号,分配空间,输出变量。
program read_data
        implicit none
        integer*4 row,i
        character(80),allocatable :: cha( : )
        row=0
        open(32,file='your_text_file')
        do while (.not. eof(32))
                row=row+1
                read(32,*)
        end do
        rewind(32)
        allocate(cha(row))
        do i=1,row
        read(32,'(A80)') cha(i)
        write(*,'(a80)') cha(i)
        end do
        close(32)
        deallocate(cha)
end program
22楼2009-11-19 21:58:34
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

tjyl

金虫 (正式写手)


nono2009(金币+1,VIP+0):谢谢应助! 11-19 22:11
计算行数是wc -l filename
用cat的话会把文件输出
引用回帖:
Originally posted by tpp001 at 2009-11-19 21:45:

谢谢你的回复,经过大家的指导我已经能计算出一个文件的行数了,在linux用cat -n 就可以.
可是我的程序又有其他问题了.望帮忙谢谢
我下面这个程序 compile没有错误,可是execute就不行,
我程序的主题就是,调用一 ...

23楼2009-11-19 21:59:42
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

tjyl

金虫 (正式写手)

★ ★ ★ ★ ★ ★
小木虫(金币+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
引用回帖:
Originally posted by tpp001 at 2009-11-19 21:47:
这是我的输入文件 'co2ben.txt' 部分数据
Oa   3.106000       3.385000       3.639000   
Cb   3.119000       3.271000       3.627000   
Oc   4.060000      -2.784000       1.788000   
Oa   2 ...

[ Last edited by tjyl on 2009-11-19 at 22:37 ]
24楼2009-11-19 22:25:34
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

tpp001

金虫 (著名写手)

引用回帖:
Originally posted by tjyl at 2009-11-19 22:25:
按照你的格式改写好了
用你发的数据测试了一下是可以的。
其实本来根本就不用去操心有多少行的,因为你只是为了计算总和。
直接按照前面的那样只判断到文件末没有就可以了。
这样改写只是为了随便试试而已。如 ...

太感谢,我在编程这方面是新手,刚刚开始学习,周围没有人可以请教!谢谢帮忙,真的!
迷茫在知识的海洋里,需要你的指导。thankyou
25楼2009-11-19 23:09:16
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 tpp001 的主题更新
普通表情 高级回复 (可上传附件)
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考博] 现在不知道怎么办,感觉很痛苦 +5 qweww 2026-05-11 6/300 2026-05-16 19:57 by Equinoxhua
[基金申请] 请问大佬b0816评完了吗 +4 市民华南虎 2026-05-12 8/400 2026-05-16 19:54 by Equinoxhua
[基金申请] 重磅!青年科学基金项目(C类)资助增幅预计超过50% +6 水和泥不是水泥 2026-05-13 8/400 2026-05-16 19:50 by Equinoxhua
[基金申请] 精华III评审感受-评审感受-评审感受 +15 ferrarichen 2026-05-11 19/950 2026-05-16 19:44 by Equinoxhua
[博后之家] 售SCI一区T0P文章,我:8.O.5.5.1.O.5.4,科目齐全,可+急 +3 k37jurhrau 2026-05-16 3/150 2026-05-16 19:10 by j6b2pdz07o
[论文投稿] 售SCI一区T0P文章,我:8.O.5.5.1.O.5.4,科目齐全,可+急 +3 x0mp7owy2b 2026-05-15 3/150 2026-05-16 17:50 by j6b2pdz07o
[论文投稿] 售SCI一区T0P文章,我:8.O.5.5.1.O.5.4,科目齐全,可+急 +3 v9tggjlwd0 2026-05-15 3/150 2026-05-16 17:30 by j6b2pdz07o
[考博] 光量子物理方向 博士招生 1人(2026.09) +3 sandyworld 2026-05-15 3/150 2026-05-16 17:11 by zznnnj
[有机交流] 求有机合成大神指点三硫酸乙烯酯(CAS:2793408-99-6)的合成路线 30+3 Leekmid 2026-05-13 10/500 2026-05-16 16:37 by czyzsu
[有机交流] 如何实现卤原子转化 10+3 BT20230424 2026-05-15 5/250 2026-05-16 16:20 by czyzsu
[硕博家园] 考博自荐 +3 科研狗111 2026-05-13 4/200 2026-05-16 11:45 by 科研狗111
[考博] 售SCI一区T0P文章,我:8.O.5.5.1.O.5.4,科目齐全,可+急 +4 l7k6xnh0yc 2026-05-14 4/200 2026-05-16 11:36 by h3oerqvkv9
[考研] 售SCI一区T0P文章,我:8.O.5.5.1.O.5.4,科目齐全,可+急 +4 l7k6xnh0yc 2026-05-14 6/300 2026-05-16 11:29 by h3oerqvkv9
[硕博家园] 申请博士 +3 呃?呃 2026-05-15 3/150 2026-05-16 11:01 by a4742549
[考博] 2026博士还有哪些学校有名额 +5 小王求读研 2026-05-15 6/300 2026-05-16 10:44 by a4742549
[硕博家园] 售SCI一区T0P文章,我:8.O.5.5.1.O.5.4,科目齐全,可+急 +4 l7k6xnh0yc 2026-05-14 5/250 2026-05-16 04:29 by k37jurhrau
[找工作] 售SCI一区T0P文章,我:8.O.5.5.1.O.5.4,科目齐全,可+急 +3 l7k6xnh0yc 2026-05-14 3/150 2026-05-16 01:49 by k37jurhrau
[文学芳草园] 风把牡丹吹跑了 +5 myrtle 2026-05-12 9/450 2026-05-15 15:27 by myrtle
[基金申请] 青C资助名额大幅增加! +11 西葫芦炒鸡蛋 2026-05-13 15/750 2026-05-15 14:36 by ambravo
[教师之家] 教学课件你会给同学吗 +8 硕士研究生吗 2026-05-13 8/400 2026-05-14 22:23 by 常规沥青
信息提示
请填处理意见