Fortran Coder

查看: 8778|回复: 4
打印 上一主题 下一主题

[文件读写] 如何将不同的输出结果输入到文件的不同列

[复制链接]

15

帖子

5

主题

0

精华

入门

F 币
100 元
贡献
50 点
跳转到指定楼层
楼主
发表于 2015-7-8 23:48:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我想达到的目的是将每次计算的计算结果同时保存在一个文件的不同列中,每计算一次,就将计算结果保存在相应的列中,以下给出了主要的程序,但是最后得到的结果只有一列,查了一些资料,感觉是由于Fortran对数组的保存是有一定的优劣排序的,但是我还是想达到以上所述目的,请各位高手给予指点,感谢!
[Fortran] 纯文本查看 复制代码
open(10,file="result.dat")    !!打开要保存的结果文件
      do ii=1,npc     !!进行npc次循环计算,假设npc=231   
        open(20,file='data.txt')   !!data文件的结果在每次循环计算中是不断更新的,计算是子程序进行的,在此不显示
          do i=1,ndc   !!data文件中共有ndc个数据,假设ndc=500
             read(20,*)data(i)   !!读取data文件中的数据
             result(i,ii)=data(i)  !!ii控制不同的列,将每次循环计算的data数据存放在不同的列
             enddo
          close(20)

          do i=1,ndc                        
              write(30,31) result(i,ii)  !!写入每次的data数据
             31 format(231(<ndc>f16.7))  !!定义数据格式,并给定共231列
          enddo
close(10)



分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩

954

帖子

0

主题

0

精华

大师

F 币
184 元
贡献
75 点

规矩勋章元老勋章新人勋章水王勋章热心勋章

QQ
沙发
发表于 2015-7-9 08:27:53 | 只看该作者
[Fortran] 纯文本查看 复制代码
  Open (10, File='result.dat')
  Do ii = 1, npc 
    Open (20, File='data.txt') 
    Read( 20 , * ) data( : )
    result( : , ii ) = data( : )
    Close (20)
    Do i = 1, ndc
      Write (10, '(<ii>f16.7)') result( i , 1:ii )
    End Do
  End Do
  Close (10)

15

帖子

5

主题

0

精华

入门

F 币
100 元
贡献
50 点
板凳
 楼主| 发表于 2015-7-9 09:50:11 | 只看该作者
vvt 发表于 2015-7-9 08:27
[mw_shl_code=fortran,true]  Open (10, File='result.dat')
  Do ii = 1, npc
    Open (20, File='data. ...

感谢您的指点!我按您的命令运行了一下,但是输出的结果是(1,2,3,代表第1,2,3次计算保存的结果)
1
...
1

1  2
...  ...
1  2

1  2   3
...  ...  ...
1  2   3

我想实现的结果是:

1  2   3   4   5  6  7
...  ...  ...  ...  ...  ...  ...
1  2   3   4   5  6  7
求指点,再次表示感谢!

2015

帖子

12

主题

5

精华

论坛跑堂

臭石头雪球

F 币
1572 元
贡献
676 点

美女勋章热心勋章星光勋章新人勋章贡献勋章管理勋章帅哥勋章爱心勋章规矩勋章元老勋章水王勋章

地板
发表于 2015-7-9 10:00:33 | 只看该作者
那你计算完成以后一起输出就好了,不需要在循环内部输出。


[Fortran] 纯文本查看 复制代码
Open (10, File='result.dat')
Do ii = 1, npc 
  Open (20, File='data.txt') 
  Read( 20 , * ) data( : )
  result( : , ii ) = data( : )
  Close (20)
End Do
Do i = 1, ndc
  Write (10, '(<npc>f16.7)') result( i , : )
End Do
Close (10)

15

帖子

5

主题

0

精华

入门

F 币
100 元
贡献
50 点
5#
 楼主| 发表于 2015-7-9 10:16:03 | 只看该作者
fcode 发表于 2015-7-9 10:00
那你计算完成以后一起输出就好了,不需要在循环内部输出。

是的,我改动了一下循环次序,保存最后一次计算结果就可以了:
[Fortran] 纯文本查看 复制代码
Do ii = 1, npc 
  Open (20, File='data.txt') 
  Open (10, File='result.dat')
  Read( 20 , * ) data( : )
  result( : , ii ) = data( : )
  Close (20)
  Do i = 1, ndc
    Write (10, '(<ii>f16.7)') result( i , 1:ii )
  Close (10)
  End Do
End Do

感谢两位指点!!!
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-11-1 09:25

Powered by Tencent X3.4

© 2013-2024 Tencent

快速回复 返回顶部 返回列表