请选择 进入手机版 | 继续访问电脑版
爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 2746|回复: 3

[求助] 每两行求均值,前两行均值放在一个txt里,后两行放在另一个txt里。求大神看下哪里....

[复制链接]

新浪微博达人勋

发表于 2018-4-8 10:51:00 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
每两行求均值,前两行均值放在一个txt里,后两行放在另一个txt里。求大神看下哪里有问题呢?
不懂啊.jpg
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2018-4-8 10:51:56 | 显示全部楼层
!对上午星10点到11点取均值,下午星13点到14点取均值.
program first
character*15 ch0
character*5 zhandian0

res=systemqq('dir /b *.txt>dir.txt')
open(1,file='dir.txt')
do while(.not.eof(1))
        read(1,*) ch0 !ch0 BJZPM09-10.txt
        if(ch0(1:7)=='dir.txt') then
                cycle
        else
                zhandian0=ch0(1:len_trim(ch0)-11) !zhandian BJZ
                call CSHNET(ch0,zhandian0)
        end if
end do
close(1)
end



          subroutine CSHNET(ch0,zhandian0)
          character*15 ch0
          character*5 zhandian0
          character*(len_trim(zhandian0)) zhandian
          character*(20) wjm
          integer day(5000),riqi(5000),num,i,j
      real aa(5000),bb(5000),cc(5000),dd(5000),ee(5000),ff(5000)
      
   
          
          zhandian=zhandian0(1:len_trim(zhandian0))

          open(9,file=ch0)
          wjm='SWX'//zhandian//'DJPM.txt'                   !此处先打开文件9,即需要读取的各站点TXT文档,将站点名赋值给上午星文件名10和下午星文件名11?
          open(10,file=wjm)
          wjm='XWX'//zhandian//'DJPM.txt'
          open(11,file=wjm)   
      
          num=0
          do while(.not.eof(9))
                read(9,*)
                num=num+1
          end do
          rewind(9)

          num=num-1                                                      !此处为什么要-1,是因为前面要空读了一行?                 
          read(9,*)
          do i=1,num
          read(9,*) day(i),aa(i),bb(i) !aa pm25 bb pm10
      cc(i)=-9999
      dd(i)=-9999
      ee(i)=-9999
      ff(i)=-9999
      riqi(i)=-9999
          enddo
      j=1
      
      do i=1,num,4
          riqi(j)=day(i)
          if(aa(i)/=-9999.and.aa(i+1)/=-9999)then
          cc(j)=(aa(i)+aa(i+1))/2 !cc swx pm25
          end if
         if(bb(i)/=-9999.and.bb(i+1)/=-9999)then
          dd(j)=(bb(i)+bb(i+1))/2 !dd swx pm10
           end if
         if(aa(i+2)/=-9999.and.aa(i+3)/=-9999)then
          ee(j)=(aa(i+2)+aa(i+3))/2 ! ee xwx pm25
          end if
      if(bb(i+2)/=-9999.and.bb(i+3)/=-9999)then
          ff(j)=(bb(i+2)+bb(i+3))/2 ! ff xwx pm10
          end if
          j=j+1
        end do
        

          write(10,*) '日期    PM25    PM10'
          write(11,*) '日期    PM25    PM10'
          do i=1,(num/4)
            write(10,100) riqi(i),cc(i),dd(i)
            write(11,100) riqi(i),ee(i),ff(i)
          enddo

100   format(i10,4x,f9.3,4x,f9.3,4x)
          close(9)
          close(10)
          close(11)
      
          end



密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2018-4-8 10:53:04 | 显示全部楼层
源程序见二楼,用vif跑程序只能处理一个文件,第二个文件总说有断点,原文件的格式一样的呀
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2018-4-8 14:04:16 | 显示全部楼层
首先,你要了解编译器反馈了啥?
list-directed I/O syntax error
这个是常见的输入输出错误
例如你在txt文件里边存的是abc,是字符型的东西,而你却以整型的格式去读取,那编译器就会报上边的错误

其次就是怎么查错了,这个上课老师很少会讲...
先尝试让程序输出读到的数据,然后看是在哪行停了,然后进数据文件里边查
很有可能哪行是tab制表符或者是空格,也有可能是naN
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

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