24小时热门版块排行榜    

查看: 949  |  回复: 17

sci_papers

银虫 (正式写手)

[交流] 【求助】求一个处理数据的小程序【已完结】 已有6人参与

大家好,我想处理一些数据,因为数据比较多,麻烦帮忙编写一个小程序.程序应该比较简单,但是要考虑下几十个文本数据的情况下,该怎么操作,谢谢.在这儿我仅以两个文本数据作为例子,麻烦各位帮忙编写下.
a.dat
            a1              a2
        1317.72      0.000116
        1299.71     -0.001662   
        1276.74      0.000732   
        1273.09     -0.000163   
        1267.25      0.001292   
        1231.14      0.001560   
        1212.02     -0.006060  
        1207.34      0.002982   
        1203.73      0.001189   
        1188.71     -0.000662   
        1182.54     -0.000166   
        1170.78      0.000149     
        1149.25     -0.000112   
        1118.63      0.000126   
        1118.22      0.000898   
        1091.80     -0.001232   
        1089.63      0.000377  
        1053.32      0.000209   
        1049.16      0.000863  
        1033.49     -0.000936  
        1011.41      0.000196     
        1002.53      0.000581   
         978.58      0.000019   
         939.70      0.001685   
         935.25     -0.000613   
         931.69     -0.001225   
         922.34     -0.000126   
         921.47      0.000166   
         885.45      0.000699


b.dat
            b1                b2
        1317.72      0.005172
        1299.71      0.003400   
        1276.74     -0.000988   
        1273.09      0.001009   
        1267.25      0.001390   
        1231.14     -0.001320   
        1212.02      0.007062  
        1207.34      0.002832   
        1203.73      0.001903   
        1188.71      0.001809   
        1182.54      0.000306   
        1170.78     -0.000367     
        1149.25      0.000382   
        1118.63      0.000126   
        1118.22      0.001008   
        1091.80     -0.001388   
        1089.63     -0.000469  
        1053.32     -0.000532   
        1049.16      0.000863  
        1033.49      0.001269  
        1011.41      0.000398     
        1002.53      0.000669   
         978.58     -0.000280   
         939.70      0.001685   
         935.25      0.001015   
         931.69      0.000950   
         922.34     -0.000339   
         921.47      0.000356   
         885.45     -0.000253
就是这两个数据中,一列是频率(a1,b1),一列是强度(a2,b2).而且频率都是一样的,但是希望把强度这列按照这个百分比得到数据c=a2*60% + b2*40%
然后输出结果文本应该是a1或者b1,还有c这一列.
但是考虑到需要处理的数据比较多,应该怎么合理的安排这个程序,比如需要处理的文本名称我可以手动输入,然后紧接着输入这个文本的一个百分数.
比如,我输入:
a.txt
60%
这样代表了a.txt文本中的a2列需要乘以60%这个百分数.一次类推进行下去.
这样有多少文本就可以输入多少个.最后得到我想要的数据文本.
不知道我这样说清楚没,程序应该比较简单,就是麻烦考虑下对于多个文本的处理比较简单操作.
谢谢各位了.

[ Last edited by 余泽成 on 2010-5-27 at 20:23 ]
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

snoopyzhao

至尊木虫 (职业作家)

看了一下,似乎不是很难,回头我写一个看看,呵呵……
2楼2010-05-24 14:29:22
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

snoopyzhao

至尊木虫 (职业作家)

★ ★
余泽成(金币+2):辛苦了! 2010-05-24 16:26:59
sci_papers(金币+20):谢谢,这是只有这2个的情况下这样得到数据,但是如果需要处理的数据多的话,就不方便了.就是说能否实现通过连续输入文件和百分数得到最终数据. 2010-05-24 17:20:06
最简单的一种情况,即 a.dat  与 b.dat 中 freq 完全一致的情况。如果有其它情况需要处理,请说明。
CODE:
C234567
      program main
C     
      character*80 fa_name, fb_name, fc_name, line
      real freq, strength_a, strength_b, percent
C
      write(*,'(a,$)') 'Please input the name of first file: '
      read(*,'(a)') fa_name
      write(*,'(a,$)') 'Please input the name of second file: '
      read(*,'(a)') fb_name
      write(*,'(a,$)') 'Please input the name of output file: '
      read(*,'(a)') fc_name
      write(*,'(a,$)') 'Please input the percent: '
      read(*,*) percent
      percent = percent / 100.0
C      
      open(1, file=fa_name,status='old')
      open(2, file=fb_name,status='old')
      open(3, file=fc_name,status='new')
C if there is no variable name in the first line, please comment the
C following two lines      
      read(1,*) line
      read(2,*) line
C      
5     read(1,*,end=10) freq, strength_a
10    read(2,*, end =20) freq, strength_b
      write(3,*) freq, strength_a * percent + strength_b * (1.-percent)
      goto 5
20    continue
      close(1)
      close(2)
      close(3)
      end

3楼2010-05-24 15:22:27
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

fuhuozhe

木虫 (著名写手)

sci_papers(金币+2):谢谢,这个可以处理,同样不太方便 2010-05-24 17:20:28
Excel不就可以么?
热爱科研,享受科研~~
4楼2010-05-24 15:35:40
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

snoopyzhao

至尊木虫 (职业作家)


resonant(金币+1):辛苦。 2010-05-24 21:40:22
是的,很多软件都能处理,但是否放便就不好说了
5楼2010-05-24 15:47:57
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

snoopyzhao

至尊木虫 (职业作家)


resonant(金币+1):辛苦了。 2010-05-24 21:40:33
不是很明白,你能更清楚地说一下你的要求吗?比如你的数据文件有多少个?每个要怎么处理,给一个让外行人、逻辑思绪比较差的人都能明白的描述吧……
6楼2010-05-24 17:24:38
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

snoopyzhao

至尊木虫 (职业作家)


resonant(金币+1):多谢 2010-05-24 21:40:45
从你的描述来看,你似乎要两个文件两个文件地匹配?是这样的吗?读完这两个文件,然后再读下面两个文件吗?
7楼2010-05-24 17:26:45
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

sci_papers

银虫 (正式写手)

引用回帖:
Originally posted by snoopyzhao at 2010-05-24 17:26:45:
从你的描述来看,你似乎要两个文件两个文件地匹配?是这样的吗?读完这两个文件,然后再读下面两个文件吗?

谢谢 您,我的意思是说比如有10个或者20个这样的文件需要乘以一个系数,而不仅仅是2个文件.所以我想在程序中实现,输入一个文件,然后输入要乘的百分数.这样一次类推,把所有几十个文件都输进去.最后得到一个数据文件.关键是到底有多少文件,这个我也不一定,有的几个,有的几十个,都不一样,不知道程序能否实现.谢谢
8楼2010-05-24 19:33:17
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

snoopyzhao

至尊木虫 (职业作家)


resonant(金币+1):再谢。 2010-05-24 21:41:14
引用回帖:
Originally posted by sci_papers at 2010-05-24 19:33:17:

谢谢 您,我的意思是说比如有10个或者20个这样的文件需要乘以一个系数,而不仅仅是2个文件.所以我想在程序中实现,输入一个文件,然后输入要乘的百分数.这样一次类推,把所有几十个文件都输进去.最后得到一个数据文件 ...

乘以一个系数,然后加到哪个上面。我的意思,要配对吗?每次都是两两配对的吗?比如你的文件是这样的:

a.dat + b.dat
c.dat + e.dat
f.dat + g.dat
....
....
然后把结果全部输出到一个文件中?
9楼2010-05-24 19:37:11
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

snoopyzhao

至尊木虫 (职业作家)


resonant(金币+1):恩,希望楼主能明白。 2010-05-24 21:41:30
sci_papers(金币+5):不好意思,不需要配对的,都是单独的文件.只是文件的个数不知道,有时候多 2010-05-25 15:41:40
一点儿改进,但我希望你能说得更清楚,否则这样猜下去太浪费时间了……
CODE:
C234567
      program main
C     
      character*80 fa_name, fb_name, fc_name, line
      character*1 yn
      real freq, strength_a, strength_b, percent
C
      write(*,'(a,$)') 'Please input the name of output file: '
      read(*,'(a)') fc_name
      open(3, file=fc_name,status='new')
C
30    write(*,'(a,$)') 'Please input the name of first file: '
      read(*,'(a)') fa_name
      write(*,'(a,$)') 'Please input the name of second file: '
      read(*,'(a)') fb_name
      write(*,'(a,$)') 'Please input the percent: '
      read(*,*) percent
      percent = percent / 100.0
C      
      open(1, file=fa_name,status='old')
      open(2, file=fb_name,status='old')
C if there is no variable name in the first line, please comment the
C following two lines      
      read(1,*) line
      read(2,*) line
C      
5     read(1,*,end=10) freq, strength_a
10    read(2,*, end =20) freq, strength_b
      write(3,*) freq, strength_a * percent + strength_b * (1.-percent)
      goto 5
20    continue
      close(1)
      close(2)
      write(*,'(a,$)') 'Do you continue? (Y/N) '
      read(*,'(a1)') yn
      if (yn .eq. 'n' .or. yn .eq. 'N') then
        close(3)
      else
        goto 30
      end if
      end

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