24小时热门版块排行榜    

查看: 2615  |  回复: 23

shixha

银虫 (小有名气)

引用回帖:
Originally posted by snoopyzhao at 2011-05-08 07:22:43:
你上面给出的数据中没有字符串啊……

ITEM: TIMESTEP
415000
ITEM: NUMBER OF ATOMS
32000
ITEM: BOX BOUNDS
-6.86901 78.269
-6.86901 78.269
-6.86901 78.269
ITEM: ATOMS id type xs ys zs
25103 1 0.436324 0.100938 0.0298728
2888 1 0.0537094 0.304208 0.228186
9269 1 0.154273 0.363771 0.0239597
26883 1 0.494828 0.312881 0.217542
15665 1 0.130846 0.0832195 0.0741127
1513 1 0.412006 0.477168 0.165808
17079 1 0.147788 0.136434 0.13437
23869 1 0.0371001 0.0639775 0.0341563
29274 1 0.131698 0.478297 0.14099
783 1 0.388908 0.340938 0.0679263
8406 1 0.113574 0.428534 0.166423
1087 1 0.0635733 0.424081 0.0902714
1203 1 0.0895631 0.156925 0.11031
7276 1 0.333931 0.0889185 0.0580797
23953 1 0.477922 0.499675 0.0286989
134 1 0.13748 0.179393 0.145851
25894 1 0.371261 0.0103361 0.0139889
327 1 0.0525655 0.33294 0.0685234
647 1 0.0426882 0.264239 0.113865
。。。。。。。。。。
每隔40009行,重复这样的数据结构,51个周期
11楼2011-05-08 12:33:52
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

shixha

银虫 (小有名气)

引用回帖:
Originally posted by snoopyzhao at 2011-05-08 10:12:11:
ascii 的回车,表示 Go to the beginning of the current line,所以,利用这一特性,可以模拟你的要求,呵呵……

哦,这样啊,呵呵
12楼2011-05-08 12:37:42
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

snoopyzhao

至尊木虫 (职业作家)

【答案】应助回帖

引用回帖:
Originally posted by shixha at 2011-05-08 12:33:52:
ITEM: TIMESTEP
415000
ITEM: NUMBER OF ATOMS
32000
ITEM: BOX BOUNDS
-6.86901 78.269
-6.86901 78.269
-6.86901 78.269
ITEM: ATOMS id type xs ys zs
25103 1 0.436324 0.100938 0.0298728
2888 ...

用 index 函数跳到你所需要的行的附近,然后再用 read 函数读你所需的数据,再进行进一步的处理。

这个过程,可以用 do...end do 这样的循环……

最好能给出一个完整的数据文件(那怕是精简过),加上你期望结果的描述,这样可以写成程序,大家都好理解……
13楼2011-05-08 13:12:41
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

snoopyzhao

至尊木虫 (职业作家)

【答案】应助回帖

引用回帖:
Originally posted by shixha at 2011-05-08 12:33:52:
ITEM: TIMESTEP
415000
ITEM: NUMBER OF ATOMS
32000
ITEM: BOX BOUNDS
-6.86901 78.269
-6.86901 78.269
-6.86901 78.269
ITEM: ATOMS id type xs ys zs
25103 1 0.436324 0.100938 0.0298728
2888 ...

如果行数一直是固定的,那么直接用 do i=1,...end do 来做也是可以的……
14楼2011-05-08 13:13:26
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

shixha

银虫 (小有名气)

引用回帖:
Originally posted by snoopyzhao at 2011-05-08 13:13:26:
如果行数一直是固定的,那么直接用 do i=1,...end do 来做也是可以的……

行数是固定的,我用隐do循环来读,可以了,就是稍微麻烦点,呵呵,非常感谢
15楼2011-05-08 13:28:57
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

sunyang1988

至尊木虫 (著名写手)

送鲜花一朵
引用回帖:
701330楼: Originally posted by snoopyzhao at 2011-05-07 18:12:15
第一个问题你没有说清楚,所以不知道你要干什么,至少应该给出数据,及你想要的结果……

第二个问题,可以试一下下面的代码:


program test

   character(len=20) :: a, b
   character*1 creturn ! co ...

你好,我用了类似上面的这段代码,在一个循环中想输出如下的完成度,
1/10000
2/10000
3/10000
4/10000
每一次都覆盖前面的,防止出现刷屏的情况。但用了这段代码,发现这一行始终是空的,直到程序终止(正常结束或强行退出)才打印出最后一次xxxx/10000
不知道能不能通过该进代码实现上面的想法,请指教
心之所向无惧无悔
16楼2013-02-27 09:35:34
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

snoopyzhao

至尊木虫 (职业作家)

引用回帖:
1599787楼: Originally posted by sunyang1988 at 2013-02-27 09:35:34
你好,我用了类似上面的这段代码,在一个循环中想输出如下的完成度,
1/10000
2/10000
3/10000
4/10000
每一次都覆盖前面的,防止出现刷屏的情况。但用了这段代码,发现这一行始终是空的,直到程序终止(正常 ...

你先把你的问题代码给出来看看吧……

» 本帖已获得的红花(最新10朵)

17楼2013-02-27 20:26:55
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

sunyang1988

至尊木虫 (著名写手)

送鲜花一朵
引用回帖:
1599887楼: Originally posted by snoopyzhao at 2013-02-27 20:26:55
你先把你的问题代码给出来看看吧……...

按照你说过的代码,做如下循环
program test
integer(8)::a,b
character(1)::creturn=achar(13)
do a=1,10
write(*,'(A,I)',advance='no') creturn,a
end do
end program test

我希望得到的结果是在屏幕的同一个位置打印1-10,每次后面的数字替换前面的数字,这样达到动态显示的效果而不是十个数字依次排列下来

可用上面的代码只能给出最后的10,我试过write加一行sleep,还是没有显示,只有等循环完后会出现一个'10'。按理说creturn是倒回去,可是a为什么没有显示呢

还有给字符变量creturn赋值的这个函数char()是什么意思,我没有查到

多谢了!
心之所向无惧无悔
18楼2013-02-27 20:57:01
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

snoopyzhao

至尊木虫 (职业作家)

引用回帖:
1599894楼: Originally posted by sunyang1988 at 2013-02-27 20:57:01
按照你说过的代码,做如下循环
program test
integer(8)::a,b
character(1)::creturn=achar(13)
do a=1,10
write(*,'(A,I)',advance='no') creturn,a
end do
end program test

我希望得到的结果是在屏幕 ...

其实程序没有什么问题,只是你的a给得太小了,而你的计算机可能太快了,把 a 换成 10000 再看一下

另外,(A,I) 这一句是有错误的,I后面必须要有一个整数,如 I5……

至于 char 和 achar 这样的内置函数,请查 Fortran 的文档,如 gfortran 的手册……
19楼2013-02-27 23:11:45
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

sunyang1988

至尊木虫 (著名写手)

引用回帖:
1599924楼: Originally posted by snoopyzhao at 2013-02-27 23:11:45
其实程序没有什么问题,只是你的a给得太小了,而你的计算机可能太快了,把 a 换成 10000 再看一下

另外,(A,I) 这一句是有错误的,I后面必须要有一个整数,如 I5……

至于 char 和 achar 这样的内置函数,请 ...

改成10000就直接显示10000
心之所向无惧无悔
20楼2013-02-28 08:53:42
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 shixha 的主题更新
信息提示
请填处理意见