24小时热门版块排行榜    

查看: 954  |  回复: 11
当前主题已经存档。
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

shadow6wy

铜虫 (初入文坛)

[交流] 【求助】求fortran达人解答fortran读取数据问题

我想用fortran实现我以下的要求
比如说有数据文件data.txt
文件如这样格式
1.1 1.2  1.3  1.4
2.1 2.2  2.3  2.4
3.1 3.2  3.3  3.4
(数据格式整齐)

我想依次读取1.1  1.2  1.3  1.4  2.1  2.2  2.3  2.4  3.1  3.2  3.3  3.4
但每次只要读一个,因为在读取一个数据后还有一个巨大的循环体进行运算
因此简单的说可以表达为
读取1.1赋予a——运行循环体——读取1.2再赋予a——运行循环体……直到所有数据都读完。

另外,我也不希望用数组的方式一次性把数据都读出来,因为这里是一行4个数据,我的运算中可能有1000个或者一万个数据,这样占用内存可能引起溢出。因此想求一个好一点的方法!
谢谢

急求!!!若有人肯帮忙写出程序,愿再出20金币悬赏

[ Last edited by jjdg on 2010-1-21 at 16:27 ]
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

tjyl

金虫 (正式写手)

1W个双精度的才占多少空间啊,你自己算算吧1W*8字节。你自己用动态数组,自己分配空间就是了。
读数据用real(id,*)  A,B,C,D 用默认格式就行了。不用去指定格式,一次是读一行。
引用回帖:
Originally posted by shadow6wy at 2010-1-20 17:31:
我想用fortran实现我以下的要求
比如说有数据文件data.txt
文件如这样格式
1.1 1.2  1.3  1.4
2.1 2.2  2.3  2.4
3.1 3.2  3.3  3.4
(数据格式整齐)

我想依次读取1.1  1.2  1.3  1.4  2.1  2.2  2.3  2. ...

7楼2010-01-21 18:46:55
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

tjyl

金虫 (正式写手)

★ ★
余泽成(金币+2,VIP+0):谢谢专家,辛苦了! 1-21 18:59
自己看一下rewind的用法吧
引用回帖:
Originally posted by shadow6wy at 2010-1-21 17:05:

这里只是个例子,我的数据估计有1000个或者10000个,还有许多个文件都要读,所以不能都读到内存里吧,在read一次之后就没有办法再读上一行的文件了吗?

8楼2010-01-21 18:48:48
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

tjyl

金虫 (正式写手)

★ ★
小木虫(金币+0.5):给个红包,谢谢回帖交流
余泽成(金币+1,VIP+0):谢谢参与讨论! 1-22 14:27
而且还有个好处是不会去担心格式问题。一次指定宽度读一个数字的话如果原文件精度变了还得修改。
引用回帖:
Originally posted by hakekill at 2010-1-22 11:23:
我觉得这种读法效率比较低,特别是数据量比较大的时候,我认为一次读一行,或读多行,这样既可以避免存储数组太大,有可以有效的减少读的次数。

12楼2010-01-22 14:20:30
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 shadow6wy 的主题更新
普通表情 高级回复(可上传附件)
信息提示
请填处理意见