【求助】在FORTRAN中如何动态分配多个数组
想动态分配 L 个大小不等的一维数组, 其中第 i 个数组的元素个数为 N(i), i=1,2,...,L
L 和 N(i) (i=1,2,...,L)只有在程序运行时才知道。
请问有没有办法可以动态分配这些数组?
多谢指点!!!
回复: 【求助】在FORTRAN中如何动态分配多个数组
我试了好久也不行,或许找个变通的方法,就柳暗花明了。把L个一维数组连起来,分配一个一维数组,在用的时候找到相应的位置就可以了 。
!假定 L 和 N(L) 已经存在
integer::total
real,allocatable:: p(:)
integer,allocatable::ind(:)
allocate(ind(L))
total = 0
do i = 1,L
ind(i) = total;
total = total + N(i);
enddo
allocate(p(total))
!取第 i 个数组的第 j 个值
p(ind(i)+j)
“各个数组”其实是一个数组,使用的时候注意不要越界。
或许谁还有更好的方法,我这就当是扔了一块砖头。
回复: 【求助】在FORTRAN中如何动态分配多个数组
多谢指点!!不管用什么手段,能解决问题的就是好方法!看来我还真是死板啊
另: allocate(index(size(N))) 是什么意思?
我想应该是 allocate(index(L)) 吧?
回复: 【求助】在FORTRAN中如何动态分配多个数组
index是Fortran里的函数名称,已经更改为ind,它是“各个数组”的起始位置的索引。size(N)是数组N的长度,也就是L吧?用L更好。已改为allocate(ind(L)).
回复: 【求助】在FORTRAN中如何动态分配多个数组
明白了。感谢...................对 SCIE 表示敬仰!!! 谢谢楼主分享
页:
[1]