爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 4772|回复: 8

Fortran 总是提示数组溢出,却不知道哪个数组溢出了

[复制链接]

新浪微博达人勋

发表于 2016-1-2 15:04:28 | 显示全部楼层 |阅读模式
Fortran
系统平台: Windows
问题概况: 同一个程序,我只改了parameter,然后就报错了。检查了数组大小,确实没有问题
问题截图: -
我看过提问的智慧: 看过
自己思考时长(天): 2

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

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

x
本帖最后由 我是彤-Tina 于 2016-1-2 15:09 编辑

如题,我在运行一个插值程序的时候,因为之前的疏忽,少算了两个月的数据,原来的数据是8016天,后来补上了这两个月的数据,并更新了文件。现在总的天数是8077天(增加了11,12月)并且我也打开文件查看了,的确是8077天。
其他地方我确实没有改动过,但是程序运行到一定循环的时候就会报错,说数组溢出。逐步检查了,读入数据的时候并没有问题,没有提示数组溢出了,但是就是nt=8016这里不能改变,不知道应该怎么解决这个问题。我觉得很可能是自己注意不到的小细节出了问题,所以求各位指点
QQ截图20160102151242.jpg QQ截图20160102150131.jpg
接下来就在这里报了错,不过我的确没有动过下面的程序唯一改动的就只有nt=8077那个位置和上图中7472那里(原来的数是7411)(我打开文件看了,里面的确是7472个)
        open(4,file='d:\study\allMissInfo.txt')
        do im=1,m
          do it=1,nt
           if(a(im,it,1)>3000)then
        write(4,*)zh(im,it),yr(im,it),mo(im,it),day(im,it)
        mark=im

        !计算某月某日多年平均值
        do km=1,m
        gg=0
        do kt=1,nt
         if((mo(im,it)==mo(km,kt)).and.(day(im,it)==day(km,kt)))then   
           gg=gg+1
           tih(km,gg)=a(km,kt,1)
           endif
           enddo
        enddo

        !
                do km=1,m
           sum=0.0;num=0;av(km)=0
           do ig=1,gg
           if(tih(km,ig)>30000)then
           tih(km,ig)=0
           num=num+1
           endif  
           av(km)=tih(km,ig)+av(km)
           enddo
           av(km)=av(km)/(gg-num)
        enddo

        do km=1,m
           jp(km)=a(im,it,1)-av(km)
           if(abs(jp(km))>100)jp(km)=0
        enddo
        !计算其余115站在该年、该月、该日的多年平均值,再求出此时此刻的距平值
         ff=0.0;kk=0;sum1=0.0;sum2=0.0;r=5.0;e=2.718
         do k=1,m
           dd2(k)=sqrt((lon(mark)-lon(k))**2+(lat(mark)-lat(k))**2)
         if(dd2(k)<r)then
             kk=kk+1
          weight1(k)=exp(-1.0*dd2(k)**2/(4*e))
         else
          weight1(k)=0.0
         endif
           sum1=sum1+weight1(k)*jp(k)
           sum2=sum2+weight1(k)
          enddo
          if(kk>0) ff=sum1/sum2   
         
        a(im,it,1)=av(im)+ff
      
        endif
        
        enddo !it
        enddo
        print*,'part deal ok1'




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

新浪微博达人勋

 楼主| 发表于 2016-1-2 19:44:17 | 显示全部楼层
最终找到错的地方了。。。求版主帮我删除一下帖子好么?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2016-1-2 19:48:36 | 显示全部楼层
版主,拜托帮我把这个帖子删除了好么@mofangbao
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-1-2 20:03:58 | 显示全部楼层
哪里出错了呢
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2016-1-2 22:06:17 | 显示全部楼层

我多了两个月,tih数组就不是53组了,是54组
密码修改失败请联系微信:mofangbao

新浪微博达人勋

0
早起挑战累计收入
发表于 2016-1-2 22:42:55 | 显示全部楼层
无需删除,留着以后提醒自己提问前还可以自己再多检查一遍
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-1-2 22:45:41 | 显示全部楼层
mofangbao 发表于 2016-1-2 22:42
无需删除,留着以后提醒自己提问前还可以自己再多检查一遍

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

新浪微博达人勋

发表于 2016-1-2 23:01:45 | 显示全部楼层
学习了 {:5_217:
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2016-1-3 10:27:31 | 显示全部楼层
mofangbao 发表于 2016-1-2 22:42
无需删除,留着以后提醒自己提问前还可以自己再多检查一遍

就是觉得总是在这种地方粗心,要不是昨天提问之后,我的舍友又帮我检查若干遍,我怎么都发现不了。
感觉丢人
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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