gpt4 book ai didi

format - 可变格式

转载 作者:行者123 更新时间:2023-12-02 21:17:45 25 4
gpt4 key购买 nike

我编写了一个程序来计算平方有限差分矩阵,您可以在其中输入行数(等于列数)->这存储在变量矩阵中。该程序运行良好:

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

什么不起作用?我的错误是什么?

最佳答案

您尝试使用的语法是非标准的,它仅在某些编译器中有效,我不鼓励使用它。

此外,请永远忘记 FORMAT() 语句,它们已经过时了。

当您自己从多个部分构建格式字符串时,您可以在格式字符串中获取自己的数字

character(80) :: form
form = '( (i10,1x))'
write(form(2:11),'(i10)') matrix

write(*,form) A

您还可以在每行循环中写入矩阵,然后可以使用任意大的计数或 Fortran 2008 中的 *

do i = 1, matrix
write(*,'(999(i10,1x))') A(:,i)
end do

do i = 1, matrix
write(*,'(*(i10,1x))') A
end do

检查一下我是否无意中转置了矩阵。

关于format - 可变格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29558485/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com