作业帮 > 综合 > 作业

Fortran编程--求高手

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/13 16:47:32
Fortran编程--求高手
有2列数,一列是日序,第1到365天.另一列是每天的太阳辐射,大小无规律.如何统计出连续出现4天以上 辐射值小于1000的起始日序.
如下列数据中,从第5天开始,连续4个值小于1000,输出5.统计365组数据中,所有连续出现4次的小于1000时对应的起始日序.求高手编程.尽量用fortran.
1 100
2 800
3 1200
4 1722
5 900
6 700
7 600
8 860
9 1245
10 1024
..
..
..
365 1300
楼主的意思没表达确切.
如果连续出现 10 天呢?
算 2 次连续4个(1-4,5-8,9-10不算因为只有两天)?
算 1 次连续10个(1-10)?
算 7 次连续4个(1-4,2-5,3-6,4-7,5-8,6-9,7-10)?
如果是算作7个,那么楼上那样就可以了.
而且,这个问题根本不需要用数组(对于大量数据,不用数组可以节约很多内存).
以下代码,无需数组就能完成.我是按照“算2个”来写的.
Program Baidu_Thlws
Implicit None
Integer :: iline , ilineBegin , dayn , day , x , ios
iline = 1
ilineBegin = 0
dayn = 0
Open( 12 , File = 's2.txt' )
Do
Read(12,*,iostat=ios) day , x
if ( ios /= 0 ) Exit
if ( x < 1000 ) then
dayn = dayn + 1
if ( dayn == 1 ) then
ilineBegin = iline
elseif ( dayn >= 4 ) then
write(*,*) '本次:', ilineBegin , '到' , iline
dayn = 0
end if
else
dayn = 0
end if
iline = iline + 1
End Do
Close(12)
End Program Baidu_Thlws
再问: 高手:连续10天是算1次的,请再回回答下吧,谢谢了
再答: Program Baidu_Thlws Implicit None Integer :: iline , ilineBegin , dayn , day , x , ios iline = 1 ilineBegin = 0 dayn = 0 Open( 12 , File = 's2.txt' ) Do Read(12,*,iostat=ios) day , x if ( ios /= 0 ) Exit if ( x < 1000 ) then dayn = dayn + 1 if ( dayn == 1 ) then ilineBegin = iline end if else if ( dayn >= 4 ) then write(*,*) '本次',ilineBegin,'到',iline-1 end if dayn = 0 end if iline = iline + 1 End Do if ( dayn >= 4 ) then write(*,*) '本次',ilineBegin,'到',iline-1 end if Close(12) End Program Baidu_Thlws