我想在数组中插入未知数量的值(不管顺序如何)。 我第一次读到多少值被插入,然后分配分配数组,最后读取它的值,如下面的代码从键盘读取未知大小的数组
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-大小 –