wy123 发表于 2017-8-16 09:17:32

关于数组越界的问题!!

Subroutine ran3(idum, rand)
Implicit Real *8(A-H, M, O-Z)
Parameter (mbig=4000000., mseed=1618033., mz=0., fac=1./mbig)
Dimension ma(55)
Data iff/0/
If (idum<0 .Or. iff==0) Then
    iff = 1
    mj = mseed - dble(iabs(idum))
    mj = dmod(mj, mbig)
    ma(55) = mj
    mk = 1
    Do i = 1, 54
      ii = mod(21*i, 55)
      ma(ii) = mk
      mk = mj - mk
      If (mk<mz) mk = mk + mbig
      mj = ma(ii)
    End Do
    Do k = 1, 4
      Do i = 1, 55
      ma(i) = ma(i) - ma(1+mod(i+30,55))
      If (ma(i)<mz) ma(i) = ma(i) + mbig
      End Do
    End Do
! End If
    inext = 0
    inextp = 31
    idum = 1
End If
inext = inext + 1
If (inext==56) inext = 1
inextp = inextp + 1
If (inextp==56) inextp = 1
mj = ma(inext) - ma(inextp)                                          !!!调试时 显示在这行出错误,
If (mj<mz) mj = mj + mbig
ma(inext) = mj
rand = mj*fac
Return
End Subroutine ran3
属于第三种错误   运行错误               
错误提示:Subscript #1 of the arrat MA has value -858993459 which is less than the lower bound of 1
显示ma矩阵越界   一直在找错误 还没想明白修改哪里   想请问大神怎么修改才能让程序正确运行,解除错误?
十分感谢!!!!!


li913 发表于 2017-8-16 11:11:59

不满足if条件,变量初始化未执行。

chiangtp 发表于 2017-8-16 13:38:06

1 加一個敘述: SAVE
Data iff/0/
SAVE ! save local variables inext, inextp, and ma
If (idum<0 .Or. iff==0) Then

2. http://www.indiana.edu/~clcl/Q550_WWW/Number_Generators.f95

wy123 发表于 2017-8-16 15:42:24

chiangtp 发表于 2017-8-16 13:38
1 加一個敘述: SAVE
Data iff/0/
SAVE ! save local variables inext, inextp, ...
大哥您好 出现了下面的语法错误
另外您给我的这个module拿去算的时候也出现点问题
我现在在用这个程序算,ma这个程序单独拿出来算没事 但是一放到整个程序中就会报错(数组越界)
十分感谢您的回答

wy123 发表于 2017-8-16 15:47:36

li913 发表于 2017-8-16 11:11
不满足if条件,变量初始化未执行。

您好   但是我单独把这个程序放到VS里算的时候正常运行
但是放到一个完整的程序中去算的时候就会报错(数组越界)
十分感谢您的回答

chiangtp 发表于 2017-8-16 15:55:54

wy123 发表于 2017-8-16 15:42

大哥您好 出现了下面的语法错误
另外您给我的这个module拿去算的时候也出现点问题


怎樣的"语法错误"?

wy123 发表于 2017-8-16 15:58:57

wy123 发表于 2017-8-16 15:58


好像不会发图片您等等   不好意思哈

wy123 发表于 2017-8-16 16:01:34

chiangtp 发表于 2017-8-16 15:55
怎樣的"语法错误"?

加入save后的错误
error #5082: Syntax error, found '[' when expecting one of: <LABEL> <END-OF-STATEMENT> ; BLOCK BLOCKDATA PROGRAM MODULE TYPE INTEGER REAL ...
然后我用您的那个mudule 出现这个问题
Do i = 1, n
      Do
      x = int(ran3(idum)*d) + 1
      If (raw_order(x)<>-1) Goto 10
      End Do
1>d:\documents\visual studio 2010\Projects\17081601\17081601\Source1.f90(203): error #5082: Syntax error, found '>' when expecting one of: ( <IDENTIFIER> <CHAR_CON_KIND_PARAM> <CHAR_NAM_KIND_PARAM> <CHARACTER_CONSTANT> <INTEGER_CONSTANT> ...

chiangtp 发表于 2017-8-16 16:20:07

Data iff/0/
SAVE
If (idum<0 .Or. iff==0) Then

這樣會錯???

wy123 发表于 2017-8-16 16:56:49

chiangtp 发表于 2017-8-16 16:20
Data iff/0/
SAVE
If (idum

哦哦好的 加了之后问题解决了   十分感谢您!!!!!!!!!!
页: [1] 2
查看完整版本: 关于数组越界的问题!!