4

配列の配列を定義しようとしています。私は定義しました:

  integer,dimension(2,2):: & 
    x=reshape(source= (/0,1,1,0/),  shape=(/2,2/)), & 
    y=reshape(source= (/1,0,0,1/),  shape=(/2,2/)), & 
    z=reshape(source= (/1,1,1,1/),  shape=(/2,2/)) 

配列、たとえば s(3) を定義したいのですが、その (x/y/z) はコンポーネントです。

s(1)=x 
s(2)=y 
and s(3)=z

どうすればそれを達成できますか?

4

3 に答える 3

7

s最も簡単な方法は、おそらくランク 3 の配列として定義することです。

integer, dimension(3,2,2) :: s

そして、次のようなステートメントを書くことができます

s(1,:,:) = x
s(2,:,:) = y
...

これは、Fortran で配列の配列を実装する「自然な」方法です。あなたにとってより魅力的な代替案は、次のようなものです。

type :: twodarray
   integer, dimension(2,2) :: elements
end type twodarray

type(twodarray), dimension(3) :: s

s(1)%elements = x

s(1)%elements = xtypeの操作=を再定義できるという言葉遣いが気に入らない場合は、twodarray今のところそのコードを書く時間がありません。

于 2013-10-29T21:56:26.543 に答える
0

Fortan 77 ブックのハード コピーを提供する電子ブックが見つかりませんでした。ただし、これは役立つはずです。

http://www.owlnet.rice.edu/~ceng303/manuals/fortran/FOR5_3.html

于 2013-10-29T21:53:05.787 に答える