Подтвердить что ты не робот

Как получить доступ к последнему элементу в массиве в Fortran?

В Matlab индекс end позволяет мне получить доступ к последнему элементу.

> array = [1 2 3 4 5 6 7];
> array(end)
ans =  7

Как мне сделать то же самое в Fortran?

program hello
   integer array(7)
   array = (/1, 2, 3, 4, 5, 6, 7/)
!print *, array(end)
!               1
!Error: Legacy Extension: REAL array index at (1)

! print *, array(-1)
!                1
!Warning: Array reference at (1) is out of bounds (-1 < 1) in dimension 1

! print *, array(0)
!                1
!Warning: Array reference at (1) is out of bounds (0 < 1) in dimension 1
end program Hello
4b9b3361

Ответ 1

array ( ubound (array) )

size будет работать, только если массив 1-индексирован.

Ответ 2

нет такой удобной нотации, вам нужно сделать это

 array(size(array))

в старых версиях fortran вы даже не имеете size() и должны сами отслеживать измерение

ценность примечания fortran массивы могут быть определены как отрицательные индексы, поэтому конечная нотация, используемая на некоторых других языках, будет неоднозначной.