Fortran 90阵列 - 钻石形状

时间:2012-09-28 07:24:35

标签: arrays fortran

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

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

1 个答案:

答案 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

如果你没有先见之明地用这种方式声明你的数组,算术会更加繁琐(但不会比这更糟)所以我会留给你。对于生产代码,您需要使用参数或对2ubound的调用替换所有这些lbound