为什么我在FORTRAN90上面可以运行的代码,在INTEL FORTRAN上面却运行不了,显示DEBUG ASSETION FAILED
PROGRAMMAINIMPLICITNONEINTEGER::I=0,I1=0,K=2000,J=0,NUM_MAX=0,NUM=0!考虑K行REAL::MAX=0,M...
PROGRAM MAIN
IMPLICIT NONE
INTEGER::I=0,I1=0,K=2000,J=0,NUM_MAX=0,NUM=0 !考虑K行
REAL::MAX=0,MIN=0,SUM_MAX=0,T
REAL,DIMENSION(4,2000)::DATA=0 !ASSUMING THAT K=100; DATA(I,J)对应为第I个变量的第J个数据,即数据文件中第J行第I列。数据共2000行
INTEGER,DIMENSION(100)::ZERO_POINT=0 !ASSUMING THAT K=100
REAL,DIMENSION(4,100)::HEIGHT=0
REAL,DIMENSION(4)::SUM_HEIGHT=0
OPEN(10,FILE='GHA.TXT')
READ(10,*)DATA
CLOSE(10)
DO NUM=1,4
SUM_MAX=0;ZERO_POINT=0;J=0
DO I=1,K-1
IF(DATA(NUM,I)<1E-8) THEN
IF(DATA(NUM,I+1)>0) THEN !采用上跨零点法,DATA(3,I)对应零点前最末负值,DATA(3,I+1)对应零点后首个正值
J=J+1
ZERO_POINT(J)=I
IF(J>1) THEN
MAX=0;MIN=0
DO I1=ZERO_POINT(J-1)+1,ZERO_POINT(J)
IF(DATA(NUM,I1)>MAX) MAX=DATA(NUM,I1)!找到波峰点
IF(DATA(NUM,I1)<MIN) MIN=DATA(NUM,I1)!找到波谷点
ENDDO
SUM_MAX=SUM_MAX+MAX
!NUM_MAX=NUM_MAX+1
HEIGHT(NUM,J-1)=MAX-MIN
ENDIF
ELSEIF(DATA(NUM,I+1)>1E-8)THEN!对于恰好是零点的情况,考虑DATA(NUM,I)*DATA(NUM,I+1)>0,重复上一个IF的循环
J=J+1
ZERO_POINT(J)=I+1
IF(J>1) THEN
MAX=0;MIN=0
DO I1=ZERO_POINT(J-1)+1,ZERO_POINT(J)
IF(DATA(NUM,I1)>MAX) MAX=DATA(NUM,I1)!找到波峰点
IF(DATA(NUM,I1)<MIN) MIN=DATA(NUM,I1)!找到波谷点
ENDDO
SUM_MAX=SUM_MAX+MAX
!NUM_MAX=NUM_MAX+1
HEIGHT(NUM,J-1)=MAX-MIN
ENDIF
ENDIF
ENDIF
ENDDO
PRINT*,"上跨零点位置",ZERO_POINT(1:J)
ENDDO
DO I=1,4
PRINT*,I+5,"通道下波高",HEIGHT(I,1:J-1)
ENDDO
!下面为求1/3大波波高
DO NUM=1,4
DO I1=1,J-2
DO I=2,J-1
IF(HEIGHT(NUM,I)>HEIGHT(NUM,I-1)) THEN
T=HEIGHT(NUM,I);HEIGHT(NUM,I)=HEIGHT(NUM,I-1);HEIGHT(NUM,I-1)=T
ENDIF
ENDDO
ENDDO
PRINT*,"***",HEIGHT(NUM,1:J-1)
ENDDO
T=0
DO NUM=6,9
SUM_HEIGHT(NUM)=0
DO I=1,(J-1)/3
SUM_HEIGHT(NUM)=SUM_HEIGHT(NUM)+HEIGHT(NUM,I)
ENDDO
SUM_HEIGHT(NUM)=SUM_HEIGHT(NUM)/4
PRINT*,NUM,"通道下1/3大波波高为",SUM_HEIGHT(NUM)
SUM_HEIGHT(NUM)=0
DO I=1,J-1
SUM_HEIGHT(NUM)=SUM_HEIGHT(NUM)+HEIGHT(NUM,I)
ENDDO
SUM_HEIGHT(NUM)=SUM_HEIGHT(NUM)/(J-1)
PRINT*,NUM,"通道下平均波高为",SUM_HEIGHT(NUM)
ENDDO
END 展开
IMPLICIT NONE
INTEGER::I=0,I1=0,K=2000,J=0,NUM_MAX=0,NUM=0 !考虑K行
REAL::MAX=0,MIN=0,SUM_MAX=0,T
REAL,DIMENSION(4,2000)::DATA=0 !ASSUMING THAT K=100; DATA(I,J)对应为第I个变量的第J个数据,即数据文件中第J行第I列。数据共2000行
INTEGER,DIMENSION(100)::ZERO_POINT=0 !ASSUMING THAT K=100
REAL,DIMENSION(4,100)::HEIGHT=0
REAL,DIMENSION(4)::SUM_HEIGHT=0
OPEN(10,FILE='GHA.TXT')
READ(10,*)DATA
CLOSE(10)
DO NUM=1,4
SUM_MAX=0;ZERO_POINT=0;J=0
DO I=1,K-1
IF(DATA(NUM,I)<1E-8) THEN
IF(DATA(NUM,I+1)>0) THEN !采用上跨零点法,DATA(3,I)对应零点前最末负值,DATA(3,I+1)对应零点后首个正值
J=J+1
ZERO_POINT(J)=I
IF(J>1) THEN
MAX=0;MIN=0
DO I1=ZERO_POINT(J-1)+1,ZERO_POINT(J)
IF(DATA(NUM,I1)>MAX) MAX=DATA(NUM,I1)!找到波峰点
IF(DATA(NUM,I1)<MIN) MIN=DATA(NUM,I1)!找到波谷点
ENDDO
SUM_MAX=SUM_MAX+MAX
!NUM_MAX=NUM_MAX+1
HEIGHT(NUM,J-1)=MAX-MIN
ENDIF
ELSEIF(DATA(NUM,I+1)>1E-8)THEN!对于恰好是零点的情况,考虑DATA(NUM,I)*DATA(NUM,I+1)>0,重复上一个IF的循环
J=J+1
ZERO_POINT(J)=I+1
IF(J>1) THEN
MAX=0;MIN=0
DO I1=ZERO_POINT(J-1)+1,ZERO_POINT(J)
IF(DATA(NUM,I1)>MAX) MAX=DATA(NUM,I1)!找到波峰点
IF(DATA(NUM,I1)<MIN) MIN=DATA(NUM,I1)!找到波谷点
ENDDO
SUM_MAX=SUM_MAX+MAX
!NUM_MAX=NUM_MAX+1
HEIGHT(NUM,J-1)=MAX-MIN
ENDIF
ENDIF
ENDIF
ENDDO
PRINT*,"上跨零点位置",ZERO_POINT(1:J)
ENDDO
DO I=1,4
PRINT*,I+5,"通道下波高",HEIGHT(I,1:J-1)
ENDDO
!下面为求1/3大波波高
DO NUM=1,4
DO I1=1,J-2
DO I=2,J-1
IF(HEIGHT(NUM,I)>HEIGHT(NUM,I-1)) THEN
T=HEIGHT(NUM,I);HEIGHT(NUM,I)=HEIGHT(NUM,I-1);HEIGHT(NUM,I-1)=T
ENDIF
ENDDO
ENDDO
PRINT*,"***",HEIGHT(NUM,1:J-1)
ENDDO
T=0
DO NUM=6,9
SUM_HEIGHT(NUM)=0
DO I=1,(J-1)/3
SUM_HEIGHT(NUM)=SUM_HEIGHT(NUM)+HEIGHT(NUM,I)
ENDDO
SUM_HEIGHT(NUM)=SUM_HEIGHT(NUM)/4
PRINT*,NUM,"通道下1/3大波波高为",SUM_HEIGHT(NUM)
SUM_HEIGHT(NUM)=0
DO I=1,J-1
SUM_HEIGHT(NUM)=SUM_HEIGHT(NUM)+HEIGHT(NUM,I)
ENDDO
SUM_HEIGHT(NUM)=SUM_HEIGHT(NUM)/(J-1)
PRINT*,NUM,"通道下平均波高为",SUM_HEIGHT(NUM)
ENDDO
END 展开
1个回答
展开全部
1.Fortran90 是语言标准。不是软件,你不能说“在FORTRAN90上面可以运行的代码”。
2.全世界有几十家编译器厂商,书写了支持 Fortran90 语法规范的多种编译器产品。其中有 Compaq Visual Fortran,Intel Visual Fortran,NAG Fortran,GFortran ,Silverfrost Ftn95 等等。
3.Intel Visual Fortran 也是一种 Fortran90 编译器。当然,它还支持 Fortran95 和部分 Fortran2003 语法。
4.你的代码没有语法错误,可在 Intel Visual Fortran 上正常编译链接。
5.由于缺少数据文件:GHA.TXT,因此,我无法帮你测试是否有执行错误。
6.DEBUG ASSETION FAILED 一般是由于编译环境的操作问题引起的。尝试清理一下工程,重新编译链接,然后运行(run without debug)。
2.全世界有几十家编译器厂商,书写了支持 Fortran90 语法规范的多种编译器产品。其中有 Compaq Visual Fortran,Intel Visual Fortran,NAG Fortran,GFortran ,Silverfrost Ftn95 等等。
3.Intel Visual Fortran 也是一种 Fortran90 编译器。当然,它还支持 Fortran95 和部分 Fortran2003 语法。
4.你的代码没有语法错误,可在 Intel Visual Fortran 上正常编译链接。
5.由于缺少数据文件:GHA.TXT,因此,我无法帮你测试是否有执行错误。
6.DEBUG ASSETION FAILED 一般是由于编译环境的操作问题引起的。尝试清理一下工程,重新编译链接,然后运行(run without debug)。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询