我想在數組中插入未知數量的值(不管順序如何)。 我第一次讀到多少值被插入,然後分配分配數組,最後讀取它的值,如下面的代碼從鍵盤讀取未知大小的數組
PROGRAM try
IMPLICIT NONE
INTEGER :: N
REAL, DIMENSION(:), ALLOCATABLE :: x
WRITE (*,*) "how many values?"
READ (*,*) N
ALLOCATE(x(N))
WRITE (*,*) "insert the values"
READ (*,*) x
END PROGRAM
,如果我想插入值,而不聲明之前有多少什麼分配數組? 我想我應該使用一個DO WHILE循環來以升序插入值,直到插入一個下降值,從而表明序列結束。我覺得代碼的一部分,將是以下
index = 1
WRITE(*,*) x
READ(*,*) x(index)
exit = .FALSE.
DO WHILE (exit.EQV..FALSE.)
index = index + 1
READ(*,*) x(index)
IF (x(index)>x(index-1)) THEN
exit = .TRUE.
index = index - 1
END IF
END DO
如何聲明數組x
?
始終使用標籤[tag:fortran]。僅當需要指定特定版本時才添加版本標籤,例如,更新版本不可接受。例如,Mark的答案使用Fortran 2003.你真的打算避免這種情況,只使用Fortran 95嗎? –
我刪除了我對這個問題的回答。充其量,這是錯誤的方向。在OP指出這個問題涉及從鍵盤輸入數據(雖然我的臉上鼻子清晰,但我錯過了,噢噢)我修改了我的答案*這裏是如何做* *不這樣做*。 OP的第一種方法比OP的第二種方法好得多。如果您對這個主題感興趣,請參閱http://stackoverflow.com/questions/35077833/fortran-how-do-i-allocate-arrays-when-reading-a-file-of-unknown-大小 –