来自列的矩阵
Matrix from column
文件中给出了以下数据:
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
嗯,有几件事:
要读入变量,您需要指定该变量而不是包含该变量的语句。 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
*
启用列表定向格式,其中各个值由逗号或空格分隔。类型由语句的 RHS 决定。因此,您读入了一个包含九个整数(因为 A
是九个元素长)的列表(因为 A
是整数)。有关这方面的更多详细信息,我建议 Fortran 2008 Standard,Cl。 10.10"List-directed formatting"
文件中给出了以下数据:
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
嗯,有几件事:
要读入变量,您需要指定该变量而不是包含该变量的语句。
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
*
启用列表定向格式,其中各个值由逗号或空格分隔。类型由语句的 RHS 决定。因此,您读入了一个包含九个整数(因为 A
是九个元素长)的列表(因为 A
是整数)。有关这方面的更多详细信息,我建议 Fortran 2008 Standard,Cl。 10.10"List-directed formatting"