2015-09-17 37 views
0

我是fortran的新手,我一直在摔跤這個問題:我想在用戶定義的大小和形狀的fortran中創建和排列。例如,在Python中,我只要求用戶輸入數組的上下限,然後用這些參數聲明一個數組。在fortran中,我必須首先聲明所有變量,包括數組。當聲明數組時,我需要定義大小/形狀。如何從用戶輸入中初始化Fortran中的數組?

我的第一個猜測是做這樣的事情(我就省略了開始/結束部分):

INTEGER, parameter :: lower, upper 
INTEGER, dimension(lower:upper) :: list 
READ(*,*) lower, upper 
WRITE(*,*) list 

但是這不會起作用,因爲聲明的順序是錯誤的。該程序希望我首先聲明它的大小。我確實嘗試過使用SHAPE/RESHAPE方法,但沒有設法使用這些方法。有任何想法嗎?

回答

1

簡單,使用可分配數組:

integer :: lower, upper 
integer, allocatable, dimension(:) :: list 

read(*,*) lower, upper 
allocate(list(lower:upper)) 
list = ... something ... 
write(*,*) list