определить массив целых чисел - PullRequest
1 голос
/ 09 ноября 2009

Я новичок в Фортране. Может ли any1 сказать мне, как определить целочисленный массив в предыдущем. Например. Я хочу определить массив с количеством дней в 12 месяцев. как ...

integer,allocatable(12,1) :: days

days=[31,28,31,30,31,30,31,31,30,31,30,31]

Это правильный синтаксис? Если нет, пожалуйста, дайте мне знать правильный.

Спасибо Praveen

Ответы [ 4 ]

2 голосов
/ 12 декабря 2009

Если вы хотите динамически распределенный массив, попробуйте следующее:


program arraytest
  implicit none
  integer, allocatable :: a(:)

  allocate(a(12))
  a = (/31,28,31,30,31,30,31,31,30,31,30,31/)
  print *, a
end program arraytest
1 голос
/ 31 мая 2010

integer, dimension(12) :: a = (/ 31, 28, 31, 30, ... /)

для "статического" массива. [ ] вместо (/ /) правильно для Fortran 2003 и более поздних версий; все известные мне компиляторы допускают такой синтаксис, хотя они не полностью реализуют F2003. Для динамического массива:

integer, dimension(:) :: a
! ...
allocate(a(12))
a = (/ .... /)
! ...
deallocate(a)

тоже вариант.

0 голосов
/ 12 декабря 2009

Вероятно, не нужно выделять, ведь это просто константный массив:

INTEGER :: a(12) = (/ 31,28,31,30,31,30,31,31,30,31,30,31 /)
0 голосов
/ 09 ноября 2009

В Фортране 77 я бы сказал

  INTEGER DAYS(12) / 31,28,31,30,31,30,31,31,30,31,30,31 /

Это объявление и инициализация в одном.

Если вы хотите, вы также можете разделить два:

  INTEGER DAYS(12)
  DATA DAYS / 31,28,31,30,31,30,31,31,30,31,30,31 /
...