爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 6062|回复: 17

[求助] 编程问题

[复制链接]

新浪微博达人勋

发表于 2013-4-4 17:39:00 | 显示全部楼层 |阅读模式

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

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

x
部分数据如下:

00000010 2011 07 08 02 37 33 669 +33.15202 +120.76152 -017.697 +008.4 -001.5 00007.69 1
00000011 2011 07 08 03 03 47 647 +32.57521 +120.90421 -024.083 +011.5 -002.0 00017.03 1
00000012 2011 07 08 03 30 09 420 +32.62987 +121.18573 -029.734 +010.6 -002.5 00015.19 1
00000013 2011 07 08 03 40 18 581 +32.96192 +121.97523 -032.780 +010.6 -002.7 00000.86 1
00000014 2011 07 08 03 56 36 926 +33.00636 +122.13466 -036.873 +015.4 -003.1 00001.89 1
00000015 2011 07 08 03 58 12 451 +35.10117 +116.84420 -002.794 +000.2 -000.2 00000.20 1
00000016 2011 07 08 04 16 01 709 +33.80055 +121.23735 -019.083 +009.5 -001.6 00012.48 1
00000017 2011 07 08 04 25 21 560 +35.17084 +118.54545 -003.025 +001.7 -000.3 00000.22 1
00000018 2011 07 08 04 27 19 867 +33.32699 +121.61371 -016.629 +009.2 -001.4 00001.19 1
00000019 2011 07 08 04 27 28 275 +33.58664 +117.55837 -008.516 +001.3 -000.7 00012.43 1
00000020 2011 07 08 04 27 54 735 +33.07694 +122.33427 -037.980 +012.7 -003.2 00002.21 1
00000021 2011 07 08 04 27 54 876 +33.10563 +122.31445 -014.475 +008.0 -001.2 00001.90 1
00000022 2011 07 08 04 46 21 779 +33.15138 +122.47543 -035.467 +012.2 -002.9 00005.09 1
00000023 2011 07 08 04 56 03 089 +34.41042 +121.54242 -011.920 +119.2 -001.0 00000.49 1
00000024 2011 07 08 04 56 22 830 +33.22656 +122.54473 -022.281 +010.1 -001.8 00001.78 1
00000025 2011 07 08 05 55 58 529 +33.55819 +123.51711 +015.760 +015.8 +001.3 00001.41 1
00000026 2011 07 08 06 34 38 285 +34.76625 +117.99654 -004.061 +000.6 -000.3 00000.23 1
00000027 2011 07 08 07 21 12 842 +33.41066 +117.52400 -007.012 +001.8 -000.6 00003.80 1
00000028 2011 07 08 07 21 28 136 +34.24257 +121.83811 -019.330 +006.2 -001.6 00000.56 1
00000029 2011 07 08 08 19 03 276 +31.89891 +116.06207 +017.554 +001.6 +001.5 00009.73 1
00000030 2011 07 08 09 14 31 778 +32.48808 +115.52084 +034.806 +004.3 +002.9 00018.30 1
00000031 2011 07 08 09 19 47 098 +33.17271 +116.83401 -009.260 +000.6 -000.8 00004.00 1
00000032 2011 07 08 09 24 03 145 +37.37698 +121.30198 -013.835 +001.8 -001.1 00000.31 1
00000033 2011 07 08 09 25 22 863 +31.68520 +116.29081 +021.484 +001.9 +001.8 00086.39 1
00000034 2011 07 08 09 29 38 924 +35.01694 +116.62201 -002.320 +000.2 -000.2 00000.38 1
现在手上有整个北纬34~38.5,东经114~129的数据,前几列表示序号,年月日时分秒毫秒,后面是闪电数据等,现在想用fortran实现这么个功能:就是我把全省分成0.1°*0.1° 的小网格,共3956个,需要统计每个小网格内夏季6.7.8三月共出现雷电的天数,也就是说不管网格内有多少条闪电记录,只考虑每个小网格内,有哪几天出现了闪电
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2013-4-4 17:39:17 | 显示全部楼层
{:eb302:}
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2013-4-4 19:10:59 | 显示全部楼层
有数据 有想法 就编呗  
有问题再来讨论具体卡在了哪里  留作业的提问方式...会有结果吗?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2013-4-4 21:21:55 | 显示全部楼层
我想这种问题可以去问问言深深,他肯定一下就能帮你编出来。但是自己就没什么进步了,楼主先自己有一个思路,在实现的过程中出现问题再问比较好
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2013-4-4 21:54:25 | 显示全部楼层

这个问题我已经思考了几天了,关键卡在怎么计数这一块
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2013-4-4 21:58:44 | 显示全部楼层
river 发表于 2013-4-4 21:21
我想这种问题可以去问问言深深,他肯定一下就能帮你编出来。但是自己就没什么进步了,楼主先自己有一个思路 ...

能给点提示吗 主要是我格点有3965个,数据量有六十几万 ,有点搞不懂了
密码修改失败请联系微信:mofangbao

新浪微博达人勋

0
早起挑战累计收入
发表于 2013-4-4 23:05:55 | 显示全部楼层
都没看到你的程序和想法,只是提了个需求
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2013-4-5 13:39:51 | 显示全部楼层
mofangbao 发表于 2013-4-4 23:05
都没看到你的程序和想法,只是提了个需求

program selectleibao
integer,parameter::tt=651474

integer i,j,error,year(tt),month(tt),day(tt),hour(tt),mini(tt),sec(tt),msec(tt)
real lat(tt),lon(tt),str(tt)
real,parameter:: lat1=34.0, lat2=38.5, lon1=114.5, lon2=123.0                !设置区域的经纬度边界
integer c,l,p,n,nx,ny,m,b(30),k,d(31),e,g(31)
real blat,blon,bstr




open(10, file="E:\fortran\2010\2010xiajiwell.txt",status="old", iostat=error)        !设置读数据文件路径及文件名
open(20, file="E:\fortran\2010\2010leibaoshu.txt",status="replace")                !设置写数据文件名称

  if ( error/=0 ) then
    write(20,*) "Open 2011well.txt fail."
        stop
  end if



    do i=1,tt
      read(10,*) year(i),month(i), day(i), hour(i),mini(i),sec(i),msec(i),lat(i), lon(i), str(i)      
    end do   
c=0
l=0
p=0

  do i=10*lat1,10*lat2
        do j=10*lon1,10*lon2
                 do m=1,30
                 b(m)=m
                   end do
               
                 do k=1,31
                  d(k)=k
                   end do
                 do e=1,31
                   g(e)=m
                   end do
                   nx=0
                   ny=0  
           do n=1,tt
               nx=nint(lat(n)*10)
                   ny=nint(lon(n)*10)
             if(nx.EQ.i.and.ny.EQ.j)then
                if(month(n).EQ.06)then
                   do m=1,30
                      if(day(n).EQ.b(m))then
                         c=c+1
                         b(m)=0
                         end if
                     end do
                 else if(month(n).EQ.07)then
                   do k=1,31
                      if(day(n).EQ.d(k))then
                         l=l+1
                         d(k)=0
                         end if
                     end do
                 else if(month(n).EQ.08)then
                   do e=1,31
                      if(day(n).EQ.g(e))then
                         p=p+1
                         g(e)=0
                         end if
                     end do
                   end if
                 end if
               end do
               write(20,*) i*0.1,j*0.1,c,l,p
             end do
            end do

  
stop
end        program selectleibao
上面是我写的程序,麻烦您给看看  ,运行了下 功能不对
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2013-4-5 14:32:04 | 显示全部楼层
本帖最后由 lqouc 于 2013-4-5 14:39 编辑

这位大哥,想不到我居然看完了你的这个程序,怎么说呢,不是想吐槽你,只是觉得看到了之前的自己(虽然我可能比你小)。
暂且不谈编程技术是多么值得吐槽了,就看这个程序我想给您您也不会看吧。完全没有注释,声明了一堆变量,直接就用了,也不说说是想表达什么,大家根本不知道在做什么,还要猜您的意图。而且循环里面过于复杂的循环和判断,嵌套层次太多,能运行出来真不容易,很多地方我感觉还是不对的。
一点点说你的程序吧。1.你读取的这个数据和你给大家看的一样么?你的数据嘴前面的是编号,可是你读取的时候直接读取了年,而且闪电数据你只需要第一个么?。2.你的数据是站点的吧?站点位置和你设置的格点并不重合,那你直接这么那坐标和你的格点判断合适么?3.最关键的是我就纳闷了,判断过程完全没用到读取的闪电数据,如何得到出现的频次啊?
再说一下编程问题。1.打开的文件要记得close,第一个文件读完数据就可以关了。2.判断文件是否被打开的地方输出那句话,文件的名字和你的数据不一致啊,很容易误解。3.对整个数组赋值的话,尽量用where,和forall语句,不要用do循环,一是看着麻烦,而是do不支持并行运算。4.涉及到算式的地方尽量加空格,每个变量要加注释,每个过程也要说明。5.if嵌套过深,最好起个名字。加强程序的可读性。6.最重要的是尽量用implicit none。
最后说一下,你的数据实在不算多,我这里文本数据接近200G,只要思路清晰一切都不是问题。变成这种事情最好还是先纸上谈兵比较很好。祝君成功!
密码修改失败请联系微信:mofangbao

新浪微博达人勋

0
早起挑战累计收入
发表于 2013-4-5 15:11:06 | 显示全部楼层
lqouc 发表于 2013-4-5 14:32
这位大哥,想不到我居然看完了你的这个程序,怎么说呢,不是想吐槽你,只是觉得看到了之前的自己(虽然我可 ...

真佩服你,竟然看完了,我看到这种都是直接关闭了。我让他说自己的想法就贴了真么长的程序,贴程序应该贴自己拿不准,觉得有问题的部分,不是这样一股脑全搬上来的
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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