我正在努力处理从别人那里得到的代码。他使用模块来提供主例程所需的数组。我需要的是一个包含 500 到 3500 之间数字的数组。
他通过写作做到了这一点
INTEGER :: i
REAL :: myArray(3001)
DATA (myArray(i),i=1,100)/&
500., 501., 502., 503., [...] 599./
DATA (myArray(i),i=101,200)/&
600., 601., [...], 699./
[...]
DATA (myArray(i),i=2901,3001)/&
[...] 3498., 3499., 3500./
现在对我来说这看起来非常复杂!另外,我需要 myArray 包含整数,但我当然不想删除所有这些点。
所以一开始我尝试了这个:
Do i=1,3001
myArray(i) = i+499
End Do
但我明白了
"error #6274: This statement must not appear in the specification part of a module"
我做错了什么?
最佳答案
您需要一个隐含的 do 循环。编译并运行良好
MODULE module1
INTEGER :: i
REAL :: myArray(3001) = (/ (i, i=500, 3500) /)
END MODULE
格式为
(/ (exp1, var=start, end) /)
或
(/ (exp1, var=start, end, step) /)
或
(/ (exp1, expr2, .., var=start, end, step) /)
<子>参见https://web.stanford.edu/class/me200c/tutorial_90/07_arrays.html
关于list - Fortran:如何在模块中赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39209620/