实现一个第二维依赖于第一个参数的数组

时间:2021-05-26 00:15:44

标签: arrays fortran

假设我有一个数组 A[a,b]a 的维度是 2。当a=1时,b的维数为3;当a=2时,b的维数为6。

例如,一个数组 A 看起来像

[[1,2,3]
[4,5,6,7,8,9]]

它由 1*31*6 组合而成。总共 9 个条目,不是来自输入。

有没有什么方法可以在 Fortran 中定义这样的数组?或者我需要其他类型的数据结构?

1 个答案:

答案 0 :(得分:2)

您需要更好地描述您想要做什么。使用 allocatable 实体,您可以轻松实现您所描述的内容。

program foo
  integer a, b
  real, allocatable :: x(:,:)
  read(*,*) a
  if (a == 1 .or. a == 2) then
     b = 3 * a
     allocate(x(a,b))
   else
     stop 'Is this right?'
  end if
  x = 1
  print *, shape(x)
end program foo