2014-01-08 5 views
13

In Matlab, end Index lässt mich einen letzten Artikel zugreifen.Wie greife ich auf das letzte Element in einem Array in Fortran zu?

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

Wie mache ich das gleiche in 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 
+0

Warum haben Sie dies als Matlab markiert? Scheint wie eine Fortran-Frage. –

+2

Es kann z. B. unmöglich sein, wenn das Array ein angenommenes Dummy-Argument ist. –

Antwort

6

es keine solche Bequemlichkeit Notation ist, müssen Sie diesen

array(size(array)) 

in älteren Fortran-Versionen tun, müssen Sie nicht selbst size() haben und müssen die Dimension verfolgen, sich

wert eine Notiz Fortran Arrays können so definiert werden, dass sie negative Indizes enthalten, sodass die in einigen anderen Sprachen verwendete Endnotation nicht eindeutig ist

14
array (ubound (array)) 

size funktioniert nur, wenn das Array 1-indiziert ist.

+5

NB: Wenn Sie ein mehrdimensionales Array haben, müssten Sie 'array (ubound (array, dim = n))' angeben, wobei 'n' die Dimension ist, die Sie suchen. –

+1

Danke für den Tipp. @KyleKanos Unter Verwendung Ihres Vorschlags fand ich, dass, wenn ich das letzte Element einer bestimmten Reihe ziehen wollte, folgendes notwendig war: array (n, ubound (array, dim = n)). Vielen Dank! – ryanjdillon

Verwandte Themen