爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 3421|回复: 7

[求助] 间隔两个不相邻无雨日的fortran编程思路

[复制链接]

新浪微博达人勋

发表于 2016-9-19 21:39:25 | 显示全部楼层 |阅读模式

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

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

x
间隔两个不相邻无雨日,怎么才能用的fortran程序表示
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-9-19 23:45:08 | 显示全部楼层
简单写了下,你可以试试
  1. !结果为rmark(1:n)其中1,2,3分别表示三类连续降水
  2. m1 = m2 = 0
  3. if (rain(1) >= 0.1) then
  4. m = 1
  5. end if
  6. do i = 1 , n
  7. if (rain(i) >= 0.1) then
  8.   m1 = m1 + 1 ; m2 = m2 + 1
  9. else if (rain(i) < 0.1 .and. rain(i-1) >= 0.1) then
  10.   m1 = m1 + 1 ; m2 = m2
  11. else if (rain(i) < 0.1 .and. rain(i-1) < 0.1) then
  12.   m1 = m1 - 1
  13.   if (m1 >= 5 .and. m1 < 7 .and. m2 == m1) then
  14.    rmark(i-m1-1 : i-2) = 1
  15.   else if (m1 >= 7 .and. m1 < 10 .and. m1-m2 <= 1) then
  16.    rmark(i-m1-1 : i-2) = 2
  17.   else if (m1 >= 11 .and. m1-m2 <= 2) then
  18.    rmark(i-m1-1 : i-2) = 3
  19.   end if
  20.   m1 = 0 ; m2 = 0
  21. end if
  22. if (i == n) then
  23.   if (m1 >= 5 .and. m1 < 7 .and. m2 == m1) then
  24.    rmark(n-m1-1 : n) = 1
  25.   else if (m1 >= 7 .and. m1 < 10 .and. m1-m2 <= 1) then
  26.    rmark(n-m1-1 : n) = 2
  27.   else if (m1 >= 11 .and. m1-m2 <= 2) then
  28.    rmark(n-m1-1 : n) = 3
  29.   end if
  30. end if
  31. end do
复制代码


密码修改失败请联系微信:mofangbao
回复 支持 1 反对 0

使用道具 举报

新浪微博达人勋

发表于 2016-9-19 22:45:59 | 显示全部楼层
如果不看你之前发的帖子,难以理解你想表达什么,请每次发帖都认真对待好么。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-9-20 08:44:32 | 显示全部楼层
为版主点赞
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2016-9-20 20:23:58 | 显示全部楼层
lqouc 发表于 2016-9-19 23:45
简单写了下,你可以试试

多谢版主指点!
我以后在提问题方面会多注意多向你们学习的,努力改正一些错误和不足!!
关于程序方面,我还有几个小问题想请教:
一.  3-5行那里的是不是要改成:
if (rain(1) >= 0.1) then
m1 = 1;m2 = 1
end if
do i = 2, n
二.   感觉这个程序在有些时候还是会有些问题,比如(不好意思,图片插不进去,我就放数据啦):
56312 1960 12 13 0
56312 1960 12 14 0
56312 1960 12 15 8
56312 1960 12 16 0
56312 1960 12 17 41
56312 1960 12 18 0
56312 1960 12 19 24
56312 1960 12 20 33
56312 1960 12 21 28
56312 1960 12 22 40
56312 1960 12 23 8
56312 1960 12 24 0
56312 1960 12 25 10
56312 1960 12 26 8
56312 1960 12 27 35
56312 1960 12 28 27
56312 1960 12 29 15
56312 1960 12 30 12
56312 1960 12 31 21
按照程序来判断,15号-23号,不满足2类和3类,按程序走m1, m2会归0
但人为判断,17号-31号也属于第三类,程序在这里判断不出来这种情况,只能判断出25号-31号为一类情况
不知道我有没有表述清楚,逻辑有点乱,望赐教
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2016-9-20 20:43:39 | 显示全部楼层
lqouc 发表于 2016-9-19 23:45
简单写了下,你可以试试

或者在程序11行和10行之间加:
                IF (M1 - M2 > 2) THEN
                        M1 = 0
                        M2 = 0
                ENDIF
可以避免这种情况,版主你那个程序,对我刚刚贴的那个数据,最后16天都识别不出来,加了上面这句可以识别,但类型有误,头疼。。。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-9-22 14:43:25 | 显示全部楼层
之前比较忙,没顾上看你这个,不知道你自己弄出来了没有。如果没弄出来我们可以在讨论。
我又思考了下,觉得这个程序还需要增加一些判断的返回。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2016-9-24 21:24:27 | 显示全部楼层
lqouc 发表于 2016-9-22 14:43
之前比较忙,没顾上看你这个,不知道你自己弄出来了没有。如果没弄出来我们可以在讨论。
我又思考了下,觉 ...

嗯嗯,多谢版主关心啦,但我还是没弄出来,把这个问题弄复杂了,本来是又嵌套了一个循环
i= 2, n
   j= i, n
但是好像还是判断有问题,返回的时候要加很多判断,弄晕了,没有实现。。。
后来又试了个方法,把有降雨的日数设为1,无降水的设为0,由此来判断1和0的连续性,但是就是一些特殊情况无法解决,比如:
0
8
0
8
8
8
8
8
8
这样情况的降雨出现时!!!!
希望版主能推荐个方法解决,好头疼啊
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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