我目前正在学习如何在Fortran 95中编写矩阵数组以输出文本文件。我面临的问题是,我正在处理的2行3列的矩阵数组无法格式化为我希望在输出文本文件中。我相信,我缺少一两行代码,或者没有在当前的代码行中添加一些代码。以下是我的代码行,当前输出数据和所需的输出数据。目标是获取“所需的输出数据”。请告诉我我的错误,我缺少的代码/代码行以及应该在哪里添加代码/代码行。每个答案都受到欢迎和赞赏。谢谢Stackovites。
代码行
Program Format2
!illustrates formatting Your Output
Implicit None
Integer:: B(2,3)
Integer:: k,j
!Open Output Text File at Machine 8
Open(8,file="formatoutput2.txt")
Data B/1,3,5,2,4,6/
Do k= 1,2
B(2,3)= k
!Write to File at Machine 8 and show the formatting in Label 11
Write(8,11) B(2,3)
11 format(3i3)
End Do
Do j= 3,6
B(2,3)= j
!Write to File at Machine 8 and show the formatting in Label 12
Write(8,12) B(2,3)
12 format(3i3)
End Do
End Program Format2
当前输出数据
1
2
3
4
5
6
所需的输出数据
1 3 5
2 4 6
答案 0 :(得分:0)
B(2,3)
仅指数组的一个特定元素。即在第一维度上具有索引2而在另一维度上具有索引3的元素。要引用其他元素,请使用B(i,j)
,其中i
和j
是具有所需索引的整数。要引用整个数组,请对包含整个数组的数组部分仅使用B
或使用B(:,:)
。
因此要设置值
do j = 1, 3
do i = 1, 2
B(i,j) = i + (j-1) * 2
end do
end do
并使用无数重复中显示的方法之一进行打印(Print a Fortran 2D array as a matrix Write matrix with Fortran How to write the formatted matrix in a lines with fortran77? Output as a matrix in fortran –搜索更多,就会有更好的方法。 。)
do i = 1, 2
write(8,'(999i3)') B(i,:)
end do
答案 1 :(得分:-1)
我已经看到了我的错误。我给Fortran编译器的指令是我在“输出文本文件”中得到的结果。我在声明两两行(1,2)和(3,4,5,6);而不是声明(1,2)的三三列; (3,4)和(5,6)。下面是获取所需输出数据的正确代码行。
Lines of Codes:
Program Format2
!illustrates formatting Your Output
Implicit None
Integer:: B(2,3)
Integer:: k,j
!Open Output Text File at Machine 8
Open(8,file="formatoutput2.txt")
Data B/1,2,3,4,5,6/
!(a)Declare The 1st Two-2 Values You want for k Two-2 Rows, that is (1 and 2)
!(b)Note, doing (a), automatically declares the values in Column 1, that is (1 and 2)
Do k= 1,2
B(2,3)= k
End Do
!(c)Next, Declare, the Four Values You want in Column 2 and Column 3. That is [3,4,5,6]
!(d) Based on (c), We want 3 and 4 in "Column 2"; while "Column 3", gets 5 and 6.
Do j= 3,6
B(2,3)= j
End Do
!Write to File at Machine 8 and show the formatting in Label 13
Write(8,13) ((B(k,j),j= 1,3),k= 1,2)
13 format(3i3)
End Program Format2
The Above Lines of Codes, gives the Desired Output below:
1 3 5
2 4 6