Создать массив с элементами разного типа в Фортране - PullRequest
2 голосов
/ 19 декабря 2011

Точно такие же вопросы, как и Создать массив с элементами разных типов , кроме как это сделать в Фортране?

Скажем, я хочу массив с первым измерением типа integer, вторым real и третьим character (строковым) типом. Возможно ли создать "struct" и в Фортране?

Спасибо.

1 Ответ

7 голосов
/ 19 декабря 2011

Вот пример программы использования производного типа:

TYPE mytype
  INTEGER,DIMENSION(3)   :: ints
  REAL,DIMENSION(5)      :: floats
  CHARACTER,DIMENSION(3) :: chars
ENDTYPE mytype

TYPE(mytype) :: a

a%ints=[1,2,3]
a%floats=[1,2,3,4,5]
a%chars=['a','b','c']

WRITE(*,*)a

END

Вывод:

        1            2            3    1.000000        2.000000     
3.000000        4.000000        5.000000     abc

РЕДАКТИРОВАТЬ: Согласно предложению Джонатана Дурси:

Чтобы иметь массив, в котором каждый элемент имеет элементы int, float и char, вы должны сделать что-то вроде этого:

TYPE mytype
  INTEGER   :: ints
  REAL      :: floats
  CHARACTER :: chars
ENDTYPE mytype

TYPE(mytype),DIMENSION(:),ALLOCATABLE :: a

ALLOCATE(a(10))

Затем вы будете ссылаться на ваши элементы как, например, a(i)%ints, a(i)%floats, a(i)%chars.Соответствующий ответ дан в Выделить динамический массив с взаимозависимыми измерениями .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...