我有一个数据集,它看起来像这样。
1 2 3 4 5
2 3 4 5 6
3 4 5 6 7
4 5 6 7 8
5 6 7 8 9
这是所需的输出:(没有记录任何X值)。
X X 3 X X
X 3 4 5 X
3 4 5 6 7
X 5 6 7 X
X X 7 X X
写入时,我应该输出“3, 3, 4, 5, 3, 4, 5, 6, 7, 5, 6, 7, 7
”。
到目前为止,我已经尝试了很多想法,此时似乎没有任何效果。我的do
循环最终会产生大量输出和/或它会读取错误的值。我甚至尝试过使用不同的存储模式,但似乎没有什么适用。
答案 0 :(得分:0)
如果你有先见之明的声明你的数组
integer, dimension(-2:2,-2:2) :: my-array
也就是说,如果中心元素具有索引(0,0),那么我认为这个嵌套循环将按您需要的顺序输出元素:
do row = -2,2
do col = -2+abs(row), 2-abs(row)
write(*,*) my_array(row, col)
end do
end do
如果你没有先见之明地用这种方式声明你的数组,算术会更加繁琐(但不会比这更糟)所以我会留给你。对于生产代码,您需要使用参数或对2
或ubound
的调用替换所有这些lbound
。