Fortran Coder

查看: 29715|回复: 21
打印 上一主题 下一主题

[数值问题] 关于求平均值的问题

[复制链接]

14

帖子

1

主题

0

精华

入门

F 币
55 元
贡献
33 点
跳转到指定楼层
楼主
发表于 2014-3-6 16:46:24 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
求助大家一个问题
我的资料是52年的雨量资料,每一天都有,但是有的天数是缺失的,现在需要将一个月的前15天求一个平均值,这个月剩下的天数求一个平均。
但是需要雨量大于12mm,资料里雨量30000多的表示缺失,记为0.

请位大神教下怎么求。

QQ截图20140306164022.png (14.26 KB, 下载次数: 877)

QQ截图20140306164022.png
分享到:  微信微信
收藏收藏1 点赞点赞 点踩点踩

14

帖子

1

主题

0

精华

入门

F 币
55 元
贡献
33 点
22#
 楼主| 发表于 2014-3-9 21:22:33 | 只看该作者
fcode 发表于 2014-3-9 20:49
你没有添加对文件终止的判断。一直读,遇到文件结束就出错了

哦,我试下。谢谢了

1963

帖子

12

主题

5

精华

论坛跑堂

臭石头雪球

F 币
1357 元
贡献
574 点

美女勋章热心勋章星光勋章新人勋章贡献勋章管理勋章帅哥勋章爱心勋章规矩勋章元老勋章水王勋章

21#
发表于 2014-3-9 20:49:05 | 只看该作者
filwZ 发表于 2014-3-9 20:06
我运行这个程序说有个断点,能帮我看下吗?我要算的是当取一个年平均值py2的时候,没半个月有一个pd12,带 ...

你没有添加对文件终止的判断。一直读,遇到文件结束就出错了

14

帖子

1

主题

0

精华

入门

F 币
55 元
贡献
33 点
20#
 楼主| 发表于 2014-3-9 20:06:38 | 只看该作者
本帖最后由 filwZ 于 2014-3-9 20:13 编辑
filwZ 发表于 2014-3-9 20:05
[mw_shl_code=fortran,true]Program main
  Implicit None
  real::v,w,pd12,py12

我运行这个程序说有个断点,能帮我看下吗?我要算的是当取一个年平均值py2的时候,没半个月有一个pd12,带入公式算出w和v,
当半月的平均值为0时,就直接为0了。可是我编出这个程序老说这个有断点。

pd12.dat

3.47 KB, 下载次数: 1

半月平均值

py12.dat

162 Bytes, 下载次数: 1

年平均值

14

帖子

1

主题

0

精华

入门

F 币
55 元
贡献
33 点
19#
 楼主| 发表于 2014-3-9 20:05:47 | 只看该作者
chuxf 发表于 2014-3-9 13:33
很好,别人给你写代码只是提供一种思路。

其实一个问题的确定,几句话说不清楚,很多特殊情况下你的需求 ...

[Fortran] 纯文本查看 复制代码
Program main
  Implicit None
  real::v,w,pd12,py12
  integer::year1,year2,mon1,c1,c2
    open(1,file='pd12.dat')
    open(2,file='py12.dat')
    open(3,file='canshu.dat')
    do
        read(2,*)year2,py12,c2
        do
            read(1,*)year1,mon1,pd12,c1
                if((year1==year2).and.(pd12/=0.0))then
                    w=0.8363+181.77/pd12+244.55/py12
                    v=21.586*w**(-7.1891)  
                else  if((year1==year2).and.(pd12==0.0))then
                    w=0.0
                    v=0.0
                if (year1/=year2)exit
                end if
            write(3,'(1x,i5,i5,f10.1,f10.1)')year1,mon1,w,v
        end do
    end do
    close(1)
    close(2)
    close(3)
end program

14

帖子

1

主题

0

精华

入门

F 币
55 元
贡献
33 点
18#
 楼主| 发表于 2014-3-9 13:35:04 | 只看该作者
chuxf 发表于 2014-3-9 13:33
很好,别人给你写代码只是提供一种思路。

其实一个问题的确定,几句话说不清楚,很多特殊情况下你的需求 ...

谢谢你

712

帖子

4

主题

0

精华

大师

农村外出务工人员

F 币
607 元
贡献
311 点

新人勋章爱心勋章水王勋章元老勋章热心勋章

17#
发表于 2014-3-9 13:33:19 | 只看该作者
filwZ 发表于 2014-3-9 13:29
哦,我算出来了。[mw_shl_code=fortran,true]else if (( c==0) .and. (yearlast/=-1))then
a = 0
c = 0

很好,别人给你写代码只是提供一种思路。

其实一个问题的确定,几句话说不清楚,很多特殊情况下你的需求不一定都要靠别人帮你实现。

能自己举一反三的学习,才值得鼓励!你很棒!

14

帖子

1

主题

0

精华

入门

F 币
55 元
贡献
33 点
16#
 楼主| 发表于 2014-3-9 13:29:09 | 只看该作者
chuxf 发表于 2014-3-9 13:08
有办法,修改很简单。请你尝试自己修改,如有问题再追问。

哦,我算出来了。
[Fortran] 纯文本查看 复制代码
else if (( c==0) .and. (yearlast/=-1))then
a = 0
c = 0
 write(13,*) yearlast , monlast , a , c
     

712

帖子

4

主题

0

精华

大师

农村外出务工人员

F 币
607 元
贡献
311 点

新人勋章爱心勋章水王勋章元老勋章热心勋章

15#
发表于 2014-3-9 13:08:49 | 只看该作者
filwZ 发表于 2014-3-9 13:07
有没有办法让他读完以后也输出一行平均数为0的结果呢?

有办法,修改很简单。请你尝试自己修改,如有问题再追问。

14

帖子

1

主题

0

精华

入门

F 币
55 元
贡献
33 点
14#
 楼主| 发表于 2014-3-9 13:07:15 | 只看该作者
chuxf 发表于 2014-3-9 11:51
是的,因为没有满足条件的,所以无法平均。

有没有办法让他读完以后也输出一行平均数为0的结果呢?
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-5-8 08:27

Powered by Tencent X3.4

© 2013-2024 Tencent

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