【发布时间】:2015-06-15 23:58:01
【问题描述】:
我写了一个程序来计算一个平方有限差分矩阵,你可以在其中输入行数(等于列数) -> 这存储在变量矩阵中。该程序运行良好:
program fin_diff_matrix
implicit none
integer, dimension(:,:), allocatable :: A
integer :: matrix,i,j
print *,'Enter elements:'
read *, matrix
allocate(A(matrix,matrix))
A = 0
A(1,1) = 2
A(1,2) = -1
A(matrix,matrix) = 2
A(matrix,matrix-1) = -1
do j=2,matrix-1
A(j,j-1) = -1
A(j,j) = 2
A(j,j+1) = -1
end do
print *, 'Matrix A: '
write(*,1) A
1 format(6i10)
end program fin_diff_matrix
对于输出,我希望该矩阵针对输出进行格式化,例如如果用户输入 6 行,输出也应如下所示:
2 -1 0 0 0 0
-1 2 -1 0 0 0
0 -1 2 -1 0 0
0 0 -1 2 -1 0
0 0 0 -1 2 -1
0 0 0 0 -1 2
格式的输出也应该是可变的,例如如果用户输入 10,则输出也应格式化为 10 列。网上的研究对带尖括号的格式语句给出了如下解决方案:
1 format(<matrix>i<10)
如果我在 Linux 中使用 gfortran 编译,我总是在终端中收到以下错误:
fin_diff_matrix.f95:37.12:
1 format(<matrix>i10)
1
Error: Unexpected element '<' in format string at (1)
fin_diff_matrix.f95:35.11:
write(*,1) A
1
Error: FORMAT label 1 at (1) not defined
什么不起作用,我的错误是什么?
【问题讨论】:
-
您不必在帖子上签名,您的姓名和图标会自动出现在帖子下方。尽量让你的问题简洁,直接进入你的问题。您通常也不应该在问题的标题中重复您的标签。