Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Fortran 如何使用隐含do循环逐行写入矩阵?_Fortran_Gfortran_Intel Fortran - Fatal编程技术网

Fortran 如何使用隐含do循环逐行写入矩阵?

Fortran 如何使用隐含do循环逐行写入矩阵?,fortran,gfortran,intel-fortran,Fortran,Gfortran,Intel Fortran,我的IDE是带有MingW9.2.0的代码块 我需要在文本文件中逐行编写矩阵的帮助 这是我的简单代码: 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 =

我的IDE是带有MingW9.2.0的代码块

我需要在文本文件中逐行编写矩阵的帮助

这是我的简单代码:

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 04
如何更改格式以获取此信息:

02 03


03 04

通常的方法是在do循环中逐行循环,如中所示

但也可以使用格式反转在隐含循环中执行


基本上,括号前面的数字必须是行长(列数)。如果将
*
放在那里,它将消耗整个数组。这样,每次格式找到它的所有项时,它都会打开一条新记录。

链接的问题是相反的问题,但解决方案是相同的,您使用普通do循环进行循环,我们使用单个行的隐含循环。@VladimirF是否可以使用这种do循环?是的,使用格式反转。但它不太清晰,您必须在格式中插入大小-当它不固定时。也许我们可以重新开始这个问题和答案。@VladimirF你能告诉我怎么做吗?我花了很多时间寻找重复的,但错过了这个。这是一个非常具体的问题,所以答案也非常具体。我将不删除我的答案,因为读和写之间有一个小的区别。也可以去掉尾随空格,但我认为这是不必要的。因此,总结一下:这是
”(*(1x,i2.2,:)“
不能用于任何列数的矩阵,唯一的方法是将列数放入字符变量中,并使用
/
创建
”(987(1x.i2.3))”。正确吗?
如果可以使用显式循环而不是隐式循环,则可以使用advance=no、空写入来触发换行和原子写入来执行此操作@Cocofalco没有必要使用显式循环,因为答案中显示了重复链接和链接。@harrykastrp Yes,或者像人们通常使用的那样使用正常的do循环。
 write(15,'(2(i2.2,1x))') ( ( a_mat(i,j), j = 1, 2 ), i = 1, 2 )