列中的矩阵

FBR*_*FBR 5 fortran fortran90

文件中提供以下数据:

1 7 5 4 11 0 1 -13 -7

我想从这些列中形成一个3x3矩阵。我已经尝试过,advance=no但是收到运行时错误。

program form_matrix
  implicit none
  integer:: col,A(9)
  open(unit=12,file='q10.txt')

  do col=1,9
    read(12,*,advance='no')(A(col))
  end do

  7 format(3i4)
  write(*,7)(A(col),col=1,9)
  close(12)
end program
Run Code Online (Sandbox Code Playgroud)

Ale*_*ogt 0

嗯,有几件事:

  • 要读入变量,您需要指定该变量而不是包含该变量的语句。A(col)代替(A(col))

  • 然后,您不允许使用*带有说明符的列表定向格式()advance,您需要一种格式(这在您的情况下会很困难,因为列的宽度不同)。

  • 将整行读入数组可能会更容易,无需循环并使用列表定向格式:

program form_matrix
  implicit none
  integer:: col,A(9)
  open(unit=12,file='q10.txt')

  read(12,*) A

  7 format(3i4)
  write(*,7)(A(col),col=1,9)
  close(12)
end program
Run Code Online (Sandbox Code Playgroud)

*启用列表定向格式,其中各个值由逗号或空格分隔。类型由语句的 RHS 确定。因此,您读取了一个包含九个(因为A有九个元素长)整数的列表(因为A是整数)。有关这方面的更多详细信息,我建议使用Fortran 2008 Standard , Cl。10.10“列表定向格式化”