爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 5524|回复: 13

[求助] fortran处理原始降水数据

[复制链接]

新浪微博达人勋

发表于 2016-6-28 11:42:24 | 显示全部楼层 |阅读模式

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

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

x
现在想把降水数据,原始数据格式为下图所示变成有变算单站点每年的降水总量
56038   1952      4     15  32766
56038   1952      4     16  32766
56038   1952      4     17  32766
56038   1952      4     18  32766
56038   1952      4     19  32766
56038   1952      4     20  32766
56038   1952      4     21  32766
56038   1952      4     22  32766
56038   1952      4     23  32766
56038   1952      4     24  32766
56038   1952      4     25  32766
56038   1952      4     26  32766
56038   1952      4     27  32766
56038   1952      4     28  32766
56038   1952      4     29  32766
56038   1952      4     30  32766
56038   1952      5      1  32766
56038   1952      5      2  32766
56038   1952      5      3  32766
56038   1952      5      4  32766
56038   1952      5      5  32766
56038   1952      5      6  32766
56038   1952      5      7  32766
56038   1952      5      8  32766
56038   1952      5      9  32766
56038   1952      5     10  32766
56038   1952      5     11  32766
56038   1952      5     12  32766
56038   1952      5     13  32766
56038   1952      5     14  32766
56038   1952      5     15  32766
56038   1952      5     16  32766
56038   1952      5     17  32766
56038   1952      5     18  32766
56038   1952      5     19  32766
56038   1952      5     20  32766
56038   1952      5     21  32766
56038   1952      5     22  32766
56038   1952      5     23  32766
56038   1952      5     24  32766
56038   1952      5     25  32766
56038   1952      5     26  32766
56038   1952      5     27  32766
56038   1952      5     28  3276
想得到的结果如下
56038 1970 102.8627
56038 1971 91.89658
56038 1972 117.661  
56038 1973 119.4288
56038 1974 166.6254
56038 1975 122.061  
56038 1976 102.2949
56038 1977 56.83048
56038 1978 101.3949
计算每个站点每年的降水总量,但是自己的编程好像出错了需要大神指点,不知道错在哪里
!功能:求出156个站点每站的的每年累计降水的总和

program main
implicit none
integer ,parameter::n=3711084,state_num=156      
integer year(n),state(n),mon(n),day(n),statename(state_num)
real var(n),ave
real sum
integer i,j,k,m,h
open(30,file="out.txt")      
do i=1,n
read(30,*) state(i),year(i),mon(i),day(i),var(i)
end do
close(30)
open(40,file="statename.txt")
do i=1,state_num
read(40,*)statename(i)
end do
close(40)
!*****************************************
open(50,file="sum.txt")
do i=1,state_num  
     do h=1,55,1
      sum=0.0
       m=0            
        do k=1,n           
           if(state(k)==statename(i))then  
          if(year(k)==1960+h)then      
        sum=sum+var(k)
     m=m+1
   end if
         end if
    end do     
   end do
write(50,*)state(k),1960+h,sum  
enddo

close(50)
end

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

新浪微博达人勋

发表于 2016-6-28 12:16:56 | 显示全部楼层
啥叫好像出错了。
有没有报错?怎么看出来出错的?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2016-6-28 14:16:21 | 显示全部楼层
lqouc 发表于 2016-6-28 12:16
啥叫好像出错了。
有没有报错?怎么看出来出错的?

嗯嗯没有语法错误,也没有报错,就是计算不出结果,不知道哪个环节出现了问题。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-6-28 14:25:47 | 显示全部楼层
。。。。。怎么不出结果?
运行窗口也没出错么?有没有生成文件?生成文件里面有没有结果?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2016-6-28 14:28:40 | 显示全部楼层
lqouc 发表于 2016-6-28 14:25
。。。。。怎么不出结果?
运行窗口也没出错么?有没有生成文件?生成文件里面有没有结果?

生成文件都很大,通过notepad也打不开
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-6-28 14:34:16 | 显示全部楼层
本帖最后由 lqouc 于 2016-6-28 14:36 编辑

算了,直接用我改的试一下。有问题再贴图。

program main
implicit none
integer ,parameter::n=3711084,state_num=156      
integer year(n),state(n),mon(n),day(n),statename(state_num)
real var(n),ave
real sum(55)
integer i,j,k,m,h
open(30,file="out.txt")      
do i=1,n
read(30,*) state(i),year(i),mon(i),day(i),var(i)
end do
close(30)
open(40,file="statename.txt")
do i=1,state_num
read(40,*)statename(i)
end do
close(40)
!*****************************************
open(50,file="sum.txt")
do i=1,state_num  
sum=0.0        
do k=1,n                              if(state(k)==statename(i))then  
   h=year(k)-1960      
   sum(h)=sum(h)+var(k)
  end if
end do
write(50,'(i8,55f8.2)')statename(i),sum(1:55)
enddo

close(50)end




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

新浪微博达人勋

发表于 2016-6-28 14:37:09 | 显示全部楼层
lqouc 发表于 2016-6-28 14:34
算了,直接用我改的试一下。有问题再贴图。

program main

真奇怪,那条if的语句不管怎么调都跑到上一句后面,你注意下就好了。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2016-6-28 14:39:41 | 显示全部楼层
lqouc 发表于 2016-6-28 14:37
真奇怪,那条if的语句不管怎么调都跑到上一句后面,你注意下就好了。

好的,谢谢大神的交流,有问题再与您交流
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2016-6-28 15:27:11 | 显示全部楼层
lqouc 发表于 2016-6-28 14:37
真奇怪,那条if的语句不管怎么调都跑到上一句后面,你注意下就好了。

嗯嗯不好意思,还是想请问下,我原来的程序错在哪里喃
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-6-28 16:23:54 | 显示全部楼层
自由行 发表于 2016-6-28 15:27
嗯嗯不好意思,还是想请问下,我原来的程序错在哪里喃

输出语句位置不对,应该放在第二个end do前面,你的程序里面计算的就是55年的总降水量了。
输出的站号也不应该用k表示,因为每次内层循环结束k都是最后一个值,所以站号就没有变化了。
程序里还多了个没用的计数器m。
至于文件为啥打不开,我也不清楚。
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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