如何使用隐含的 do 循环逐行编写矩阵?
How to write matrix row by row with implied do loop?
我的 IDE 是带有 MinGW 9.2.0 的 CodeBlocks。
我需要帮助在文本文件中逐行编写矩阵。
这是我的简单代码:
program matrix
integer :: i, j
integer, dimension(2,2) :: a_mat
forall( i = 1 : 2, j = 1, 2 )
a_mat(i,j) = i + j
end forall
open( unit = 15, file = 'matrix_utput.txt', action = 'write' )
write(15,'(*(i2.2,1x))') ( ( a_mat(i,j), j = 1, 2 ), i = 1, 2 )
close( unit = 15 )
end program matrix
在我的 .txt
文件中,我得到了这个:
02 03 03 04
如何更改格式以获得此:
02 03
03 04
正常的方法是在Write matrix with Fortran
处逐行循环do循环
但也可以使用格式反转。
在隐含循环中完成此操作
write(15,'(2(i2.2,1x))') ( ( a_mat(i,j), j = 1, 2 ), i = 1, 2 )
基本上括号前面的数字一定是行长(列数)。如果你把 *
放在那里,它会消耗整个数组。这样,每次格式找到所有项目时,它都会打开一个新记录。
我的 IDE 是带有 MinGW 9.2.0 的 CodeBlocks。
我需要帮助在文本文件中逐行编写矩阵。
这是我的简单代码:
program matrix
integer :: i, j
integer, dimension(2,2) :: a_mat
forall( i = 1 : 2, j = 1, 2 )
a_mat(i,j) = i + j
end forall
open( unit = 15, file = 'matrix_utput.txt', action = 'write' )
write(15,'(*(i2.2,1x))') ( ( a_mat(i,j), j = 1, 2 ), i = 1, 2 )
close( unit = 15 )
end program matrix
在我的 .txt
文件中,我得到了这个:
02 03 03 04
如何更改格式以获得此:
02 03
03 04
正常的方法是在Write matrix with Fortran
处逐行循环do循环但也可以使用格式反转。
在隐含循环中完成此操作 write(15,'(2(i2.2,1x))') ( ( a_mat(i,j), j = 1, 2 ), i = 1, 2 )
基本上括号前面的数字一定是行长(列数)。如果你把 *
放在那里,它会消耗整个数组。这样,每次格式找到所有项目时,它都会打开一个新记录。