24小时热门版块排行榜    

查看: 960  |  回复: 17

snoopyzhao

至尊木虫 (职业作家)


resonant(金币+1):感谢参与应助:-) 2010-05-27 20:26:27
不需要配对,那么百分数乘了之后加到哪个上面?给个详细一些的说明吧……
11楼2010-05-25 15:52:45
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

sci_papers

银虫 (正式写手)

引用回帖:
Originally posted by snoopyzhao at 2010-05-25 15:52:45:
不需要配对,那么百分数乘了之后加到哪个上面?给个详细一些的说明吧……

这个我在1楼也有说明,如下:
就是这两个数据中,一列是频率(a1,b1),一列是强度(a2,b2).而且频率都是一样的,但是希望把强度这列按照这个百分比得到数据c=a2*60% + b2*40%
然后输出结果文本应该是a1或者b1,还有c这一列.
但是考虑到需要处理的数据比较多,应该怎么合理的安排这个程序,比如需要处理的文本名称我可以手动输入,然后紧接着输入这个文本的一个百分数.
比如,我输入:
a.txt
60%
这样代表了a.txt文本中的a2列需要乘以60%这个百分数.一次类推进行下去.
~~~~~~~~~~~`
以上我不知道您是怎么理解的.
我在举个例子吧
如果有5个需要处理的文本,那么我可以通过输入这5个文件名和各自的百分数得到最后的一个数据.计算方式相同,都是每个文件中的强度列乘以自己对应的百分数.最后输出一列频率,一列总的强度.
对于文件的个数我也只是举例而已,因为我要处理的文件数目比较多.有的有几十个,就是想通过这样的直接输入文件名和各自的百分数来获得最后的一个数据文件.谢谢
12楼2010-05-25 16:10:50
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

snoopyzhao

至尊木虫 (职业作家)

sci_papers(金币+5):谢谢您,就是这个意思.不好意思.就是文件的多少上,我也不知道.不知道能否通过程序定义.当然实在不行的话,我后面根据自己的情况,自己修改也可以.谢谢您 2010-05-25 17:01:25
sci_papers(金币+1):但就是麻烦给我说下,我文件多的话改动的部分.谢谢 2010-05-25 17:02:27
你在 1 楼的说明俺看不懂

下面我说一下我现在的理解:

假定你有五个文件(当然,这里的 5 不是一个定值),然后,每个文件都有一列频率和一列强度,分别记作 freq, s1, freq, s2, freq, s3, freq, s4, freq, s5。也就是说,这里的 freq 都是一样的。

然后,你需要输入百分数,比如 20, 10, 30, 10, 30 (最后一个可以不输入,全部加在一起是 100)。

最后的结果是 freq, sout,其中 sout 等于
(s1*20 + s2*10 + s3*30 + s4*10 + s5*30)/100

是这个意思吗?
13楼2010-05-25 16:28:43
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

snoopyzhao

至尊木虫 (职业作家)

★ ★ ★
sci_papers(金币+7):好的,感谢感谢,向您敬礼.我后面也好好学下编程. 2010-05-25 18:14:33
余泽成(金币+3):辛苦了! 2010-05-25 18:50:02
应该差不多是这个样子了。当你在百分率那个地方输入 100 或更大的数据表示结束。
CODE:
C234567
      program main
C     
      character*80 fa_name, fb_name, line
      real freq(100), strength_a(100), strength_b(100), percent(20),
     &     sum_percent
      logical lend
      integer i, j, k
C
      lend = .FALSE.
      sum_percent = 0.
      do 40 j = 1,100
        strength_b(j) = 0.0
40    continue
C
      write(*,'(a,$)') 'Please input the name of output file: '
      read(*,'(a)') fb_name
      open(3, file=fb_name,status='new')
C
      k = 0
30    k = k + 1
      write(*,'(a,$)') 'Please input the name of input file: '
      read(*,'(a)') fa_name
      write(*,'(a,$)') 'Please input the percent: '
      read(*,*) percent(k)
      percent(k) = percent(k) / 100.0
      if (percent(k) .ge. 1.0) then
        lend = .TRUE.
        percent(k) = 1. - sum_percent
      end if
      sum_percent = sum_percent + percent(k)
C
      if (sum_percent .eq. 1.0) lend = .TRUE.
C      
      open(1, file=fa_name,status='old')
C if there is no variable name in the first line, please comment the
C following line      
      read(1,*) line
C      
      i = 1
5     read(1,*,end=15) freq(i), strength_a(i)
      strength_b(i) = strength_b(i) + strength_a(i) * percent(k)
      i = i + 1
      goto 5
15    close(1)
      if (lend) then
        do 20 j=1,i-1
          write(3,*) freq(j), strength_b(j)
20      continue
        close(3)
      else
        goto 30
      end if
      end

[ Last edited by snoopyzhao on 2010-5-25 at 18:57 ]
14楼2010-05-25 18:11:15
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

379631818

铁杆木虫 (著名写手)

★ ★
小木虫(金币+0.5):给个红包,谢谢回帖交流
余泽成(金币+1):欢迎常来程序软件版! 2010-05-26 18:50:17
以前读研时搞过这样的事情,呵呵
直接用C语言很简单
最多写个批处理文件
为了更方便大家帮你解决,楼主传上来4到6到文件,这样大家才好帮助你呀

[ Last edited by 379631818 on 2010-5-26 at 10:05 ]
15楼2010-05-26 10:04:34
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

stephenliu89

银虫 (小有名气)


小木虫(金币+0.5):给个红包,谢谢回帖交流
占个位,这个我可以用C++写
Email:stephenliu1989@163.com
16楼2010-05-27 10:36:56
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

sci_papers

银虫 (正式写手)

引用回帖:
Originally posted by stephenliu89 at 2010-05-27 10:36:56:
占个位,这个我可以用C++写

谢谢大家,热心的snoopyzhao  已经帮我写了一个程序,感谢大家,感谢snoopyzhao.
17楼2010-05-27 15:28:30
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

八舍二楼

捐助贵宾 (小有名气)


小木虫(金币+0.5):给个红包,谢谢回帖交流
学习中
尝试去做自己想做的
18楼2010-06-17 20:06:46
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 sci_papers 的主题更新
普通表情 高级回复 (可上传附件)
信息提示
请填处理意见