QQ截图20140306164022.png (14.26 KB, 下载次数: 1051)
Program www_fcode_cn
Implicit None
integer :: ierr
integer :: i , year , mon , day
integer :: yearlast , monlast , daylast , c
real :: d , a
Open( 12 , File = '57517(4年).txt' )
Open( 13 , File = 'out.txt' )
read(12,*)
yearlast = -1
monlast = -1
daylast = -1
a = 0.0
c = 0
Do
Read( 12 , * , ioStat=ierr ) i , year , mon , day , d
if ( ( ierr== 0 ) .and. (year == yearlast) .and. (mon == monlast) .and. ( (day>15)==(daylast>15) ) ) then !// 同一个半月
if ( ( d > 12.0 ) .and. ( d < 3000.0 ) ) then
a = a + d
c = c + 1
end if
else
if( c> 0 ) then
a = a / c
write(13,*) yearlast , monlast , a , c
end if
a = 0.0
c = 0
if ( ( d > 12.0 ) .and. ( d < 3000.0 ) ) then
c = 1
a = d
end if
end if
yearlast = year
monlast = mon
daylast = day
if ( ierr /= 0 ) Exit
End Do
Close( 12 )
Close( 13 )
End Program www_fcode_cn
yearlast = -1
monlast = -1
daylast = -1
( (day>15)==(daylast>15) ) )
chuxf 发表于 2014-3-6 17:21
[mw_shl_code=fortran,true]Program www_fcode_cn
Implicit None
integer :: ierr
chuxf 发表于 2014-3-7 11:03
这个程序用本次读取的年月日和上一次读取的年月日对比,以便判断是否需要重新进行平均。(你要求每半月进行 ...
filwZ 发表于 2014-3-7 11:15
我把你的那个写进去,调试不出结果。。。好难啊
216.94 KB, 下载次数: 8
filwZ 发表于 2014-3-7 12:46
不好意思,我把那个写到屏幕的让他写到一个txt里,运行完没有错误,但是也没有结果输出。麻烦你了。。 ...
chuxf 发表于 2014-3-7 13:36
别人给你写的代码,你不能完全拷贝,要根据自己的情况稍作修改。别人的代码只是思路,而不是确定的解决方 ...
chuxf 发表于 2014-3-7 13:36
别人给你写的代码,你不能完全拷贝,要根据自己的情况稍作修改。别人的代码只是思路,而不是确定的解决方 ...
filwZ 发表于 2014-3-9 11:46
还有点疑问,就是如果这半个月的数据都是不满足条件的话,3000的时候,程序就跳过了这半个月? ...
chuxf 发表于 2014-3-9 11:51
是的,因为没有满足条件的,所以无法平均。
filwZ 发表于 2014-3-9 13:07
有没有办法让他读完以后也输出一行平均数为0的结果呢?
chuxf 发表于 2014-3-9 13:08
有办法,修改很简单。请你尝试自己修改,如有问题再追问。
else if (( c==0) .and. (yearlast/=-1))then
a = 0
c = 0
write(13,*) yearlast , monlast , a , c
filwZ 发表于 2014-3-9 13:29
哦,我算出来了。[mw_shl_code=fortran,true]else if (( c==0) .and. (yearlast/=-1))then
a = 0
c = 0
chuxf 发表于 2014-3-9 13:33
很好,别人给你写代码只是提供一种思路。
其实一个问题的确定,几句话说不清楚,很多特殊情况下你的需求 ...
chuxf 发表于 2014-3-9 13:33
很好,别人给你写代码只是提供一种思路。
其实一个问题的确定,几句话说不清楚,很多特殊情况下你的需求 ...
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
filwZ 发表于 2014-3-9 20:05
[mw_shl_code=fortran,true]Program main
Implicit None
real::v,w,pd12,py12
3.47 KB, 下载次数: 1
半月平均值
162 Bytes, 下载次数: 1
年平均值
filwZ 发表于 2014-3-9 20:06
我运行这个程序说有个断点,能帮我看下吗?我要算的是当取一个年平均值py2的时候,没半个月有一个pd12,带 ...
fcode 发表于 2014-3-9 20:49
你没有添加对文件终止的判断。一直读,遇到文件结束就出错了
欢迎光临 Fortran Coder (http://bbs.fcode.cn/) | Powered by Discuz! X3.2 |