- 积分
- 5447
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2015-9-25
- 最后登录
- 1970-1-1
|
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
求大神指点!
program anshan_airpollution
integer yy,mm,dd,hh,start_year,end_year,p,q
parameter(start_year=2013,end_year=2016,q=175)
character stn*20,tt*8,b*10,c*20,city*10,stn_name*20(20),fil*16(q)
real a(8)
type daily_data
integer number
real airp_c(0:23,8)
character level(0:23)*10,pollutant(0:23)*20,tt(0:23)*8,city(0:23)*10
logical hh_exist(0:23)
end type
type(daily_data) ap(20,start_year:end_year,12,31)
open(11,file='e:/data/fil.name.txt')
do p=1,q
read(11,*) fil(p)
enddo
do p=1,q
!数据初始化
do l=1,20
do yy=start_year,end_year
do mm=1,12
do dd=1,31
ap(l,yy,mm,dd).hh_exist=.false.
ap(l,yy,mm,dd).number=0
ap(l,yy,mm,dd).city=''
ap(l,yy,mm,dd).tt=''
ap(l,yy,mm,dd).airp_c=0
ap(l,yy,mm,dd).level=''
ap(l,yy,mm,dd).pollutant=''
enddo
enddo
enddo
enddo
!读入指定文件的数据
open(1,file='e:/data/12/12last/'//trim(adjustl(fil(p)))//'.txt')
!open(1,file='e:/data/12/12last/baotou7-12.txt',action='read')
do
read(1,*,end=10),stn,yy,mm,dd,tt,city,a(1:8),b,c
k=0
l=0
do i=1,20
if(stn==stn_name(i)) then
l=i
k=1
exit
endif
enddo
if(k==0) then
stn_number=stn_number+1
l=stn_number
stn_name(l)=stn
endif
!计算小时
do i=1,8
if(tt(i:i)==':') then
read(tt(1:i-1),*),hh
exit
endif
enddo
ap(l,yy,mm,dd).tt(hh)=tt
ap(l,yy,mm,dd).hh_exist(hh)=.true.
ap(l,yy,mm,dd).number=ap(l,yy,mm,dd).number+1
ap(l,yy,mm,dd).city(hh)=city
ap(l,yy,mm,dd).airp_c(hh,:)=a
ap(l,yy,mm,dd).level(hh)=b
ap(l,yy,mm,dd).pollutant(hh)=c
enddo
10 close(1)
!输出
!open(2,file='e:/data/control/result.txt')
open(2,file='e:/data/control/1/'//trim(adjustl(fil(p)))//'.txt')
do l=1,stn_number
do yy=start_year,end_year
do mm=1,12
do dd=1,31
if(ap(l,yy,mm,dd).number.LE.19) then
ap(l,yy,mm,dd).pollutant='-999'
ap(l,yy,mm,dd).level='-999'
ap(l,yy,mm,dd).airp_c=-999
endif
do hh=0,23
if(ap(l,yy,mm,dd).hh_exist(hh)) then
write(2,100),stn_name(l),yy,mm,dd,ap(l,yy,mm,dd).tt(hh),ap(l,yy,mm,dd).city(hh),&
ap(l,yy,mm,dd).airp_c(hh,1:8),ap(l,yy,mm,dd).level(hh),ap(l,yy,mm,dd).pollutant(hh)
endif
enddo
enddo
enddo
enddo
enddo
100 format(a12,2x,i4,2x,i2,2x,i2,2x,a8,2x,a10,3f8.2,f10.3,4f8.2,2x,a10,2x,a20)
close(2)
end do
end
|
|