24小时热门版块排行榜    

CyRhmU.jpeg
南方科技大学公共卫生及应急管理学院2026级博士研究生招生报考通知(长期有效)
查看: 774  |  回复: 4

1010500

金虫 (小有名气)

[求助] FORTRAN或程序语言数据处理求助

现有a.txt文件,其中数据格式如下:
0  0   0.066830    0  1  -0.030365    0  2   0.004788
0  3  -0.030365    1  0  -0.030365    1  1  -0.002760
1  2   0.042759    1  3   0.053272    2  0   0.004788
2  1   0.042759    2  2   0.000067    2  3  -0.000719
3  0  -0.030365    3  1   0.053272    3  2  -0.000719
3  3  -0.002141                                      
希望通过FORTRAN读入处理,以以下格式输出到b.txt:
0  0   0.066830                                                         
1  1  -0.002760    1  0  -0.030365                                      
2  2   0.000067    2  1   0.042759    2  0   0.004788                  
3  3  -0.002141    3  2  -0.000719    3  1   0.053272    3  0  -0.030365
急切的希望高手帮助,不甚感激!C/C++、VB处理也可。金币不够可以再加.

[ Last edited by 1010500 on 2012-11-21 at 20:54 ]
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

libralibra

至尊木虫 (著名写手)

骠骑将军

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
感谢参与,应助指数 +1
1010500: 金币+20, ★★★很有帮助, 你好,感谢你的帮助,不懂你使用的这个程序,能否写成C++? 2012-11-21 21:20:39
jjdg: 金币+1, 感谢参与 2012-11-22 10:05:27
python code
CODE:
#! /usr/bin/env python
import re

data = {}
for line in open(r'data.txt').readlines():
        items = [x.strip() for x in line.split(' ') if len(x.strip())>0]
        for i in range(0,len(items),3):
                if items[i] in data.keys():
                        data[items[i]][items[i+1]] = items[i+2]
                else:
                        data[items[i]] = {items[i+1]:items[i+2]}
for i in range(len(data)):
        for j in range(i,-1,-1):
                print '%d %d %0.6f ' % (i,j,float(data[str(i)][str(j)])),
        print

结果:
CODE:
>>> ================================ RESTART ================================
>>>
0 0 0.066830
1 1 -0.002760  1 0 -0.030365
2 2 0.000067  2 1 0.042759  2 0 0.004788
3 3 -0.002141  3 2 -0.000719  3 1 0.053272  3 0 -0.030365
>>>  

matlab/VB/python/c++/Java写程序请发QQ邮件:790404545@qq.com
2楼2012-11-21 21:08:48
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

chembetsey

木虫 (小有名气)

【答案】应助回帖


感谢参与,应助指数 +1
jjdg: 金币+1, 感谢参与 2012-11-22 10:05:33
直接循环读入数组,再写出来就是了。处理数组,Fortran功能更强大。
open(unit=1, file='A.txt')
open(unit=2, file='B.txt')
read(1, *) (R(i, j), j=0,3), i=0,3)
do i=0,3
    write(2, *) (i, j, R(i, j), j=i, 0, -1)
end do
3楼2012-11-21 21:39:27
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

1010500

金虫 (小有名气)

引用回帖:
3楼: Originally posted by chembetsey at 2012-11-21 21:39:27
直接循环读入数组,再写出来就是了。处理数组,Fortran功能更强大。
open(unit=1, file='A.txt')
open(unit=2, file='B.txt')
read(1, *) (R(i, j), j=0,3), i=0,3)
do i=0,3
    write(2, *) (i, j, R(i, j), ...

谢谢你了,能否把代码写全验证一下,我运行你给的代码出现很多错误。
4楼2012-11-21 22:20:21
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

chembetsey

木虫 (小有名气)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
jjdg: 金币+1, 感谢参与 2012-11-22 10:05:40
1010500: 金币+30, ★★★★★最佳答案, 非常感谢你的帮助! 2012-11-23 15:01:10
改正错误是你学习的必经途径。

integer i, j, k
real*8 R(0:3,0:3)
open(unit=1, file='A.txt')
open(unit=2, file='B.txt')
read(1, *) ( (k, j, R(i, j), j=0,3), i=0, 3)
do i=0,3
    write(2, '(100(I3, I3, F10.6))') (i, j, R(i, j), j=i, 0, -1)
end do
end
5楼2012-11-21 23:03:58
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 1010500 的主题更新
信息提示
请填处理意见