Fortran Coder

查看: 14161|回复: 3
打印 上一主题 下一主题

[求助] 求助找出如何数组越界的啊!!感激不尽啊!!!

[复制链接]

8

帖子

4

主题

0

精华

入门

F 币
41 元
贡献
25 点
跳转到指定楼层
楼主
发表于 2014-6-28 10:48:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我这是一个很长的程序,但是里面有些重复,显示数组越界,L3=0我怎么也想不出为什么会越界。求指点啊!!!
前边的没有问题,后边就有了

Text1.f90

32 KB, 下载次数: 4

分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩

954

帖子

0

主题

0

精华

大师

F 币
184 元
贡献
75 点

规矩勋章元老勋章新人勋章水王勋章热心勋章

QQ
沙发
发表于 2014-6-28 14:41:01 来自移动端 | 只看该作者
debug是解决一切运行时错误最好的方式。。

100

帖子

0

主题

0

精华

专家

F 币
550 元
贡献
291 点

规矩勋章元老勋章

QQ
板凳
发表于 2014-6-28 16:40:42 | 只看该作者
n2 函数里
n2=(1+dcos(x4_)+dcos(x3_-x4_))*(dsin(x3_*r3+x4_*r4))+(dsin(x3_-x4_)-dsin(x4_))*(dcos(x3_*r3+x4*r4))

是否应该为
n2=(1+dcos(x4_)+dcos(x3_-x4_))*(dsin(x3_*r3+x4_*r4))+(dsin(x3_-x4_)-dsin(x4_))*(dcos(x3_*r3+x4_*r4))

另外,如果楼主有一个好的调试器,对于数组越界可以事半功倍。

比如我的编译器(IVF+VS)就会直接提示
forrtl: severe (408): fort: (3): Subscript #2 of the array AD has value 0 which
is less than the lower bound of 1


中断以后就会发现在 825 行
if(ad(l1,l3)+ad(l2,l4)+ad(l1,l4)==3)then
此处的 L3 = 0,而 ad 从 1 开始。所以越界。

至于 L3 为何为 0 ,你需要继续向前追索原因。(由于算法不熟悉,别人较难帮忙)

35

帖子

2

主题

1

精华

专家

超子

F 币
565 元
贡献
196 点

规矩勋章

QQ
地板
发表于 2014-6-30 15:52:24 | 只看该作者
设置断点,单步调试~~
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

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

GMT+8, 2024-11-23 22:54

Powered by Tencent X3.4

© 2013-2024 Tencent

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