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

配列をそのように宣言する先見の明がなかった場合、算術演算はもう少し厄介です (ただし、それより悪くはありません) ので、お任せします。また、プロダクション コードでは、これらすべて2の をパラメーターまたは or の呼び出しにubound置き換える必要がありますlbound

于 2012-09-28T07:38:50.620 に答える