2009-11-09 4 views
1

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

integer,allocatable(12,1) :: days 

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

Является ли этот синтаксис правильно? Если нет, сообщите мне правильный.

Благодаря Praveen

ответ

0

В FORTRAN 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/
2

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


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 
0

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

INTEGER :: a(12) = (/ 31,28,31,30,31,30,31,31,30,31,30,31 /) 
1

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

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

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

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