0

我有一个数据集,它看起来像这样。

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循环最终会创建大量输出和/或读取错误的值。我什至尝试过使用不同的存储模式,但似乎没有什么适用的。

4

1 回答 1

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

如果您没有先见之明以这种方式声明您的数组,那么算术会更加繁琐(但不会比这更糟),所以我将其留给您。对于生产代码,您需要将所有这些s 替换为参数或对or2的调用。uboundlbound

于 2012-09-28T07:38:50.620 回答