znajdowanie określonych indeksów z tablicą wskaźników
Jestem względnie nowy w Fortran i łamam głowę o jedną rzecz teraz:
Chcę napisać podprogram do znajdowania indeksów dla konkretnych elementów w rzeczywistej tablicy 1D (podanej procedurze jako dane wejściowe).
Wygenerowałem tablicę ze 100 losowymi reałami, zwanąarr
, a teraz chcesz określić indeksy tych elementów, które są większe niż rzeczywista wartośćmin
, który jest również przekazywany do podprogramu.
Poza tym na koniec chciałbym mieć wskaźnik, który przydzielę w końcu, co, jak mi powiedziano, byłoby lepsze niż użycie tablicyindices
zawierające znalezione indeksy.
Po prostu nie znalazłem sposobu, aby to rozwiązać, miałem następujące podejście:
SUBROUTINE COMP(arr, min)
real, intent(in) :: arr(:)
real, intent(in) :: min
integer, pointer, dimension(:) :: Indices
integer :: i, j
! now here I need a loop which assigns to each element of the pointer
! array the Indices one after another, i don't know how many indices there
! are to be pointed at
! And I dont know how to manage that the Indices are pointed at one after another,
! like Indices(1) => 4
! Indices(2) => 7
! Indices(3) => 32
! Indices(4) => 69
! ...
! instead of
! Indices(4) => 4
! Indices(7) => 7
! Indices(32) => 32
! Indices(69) => 69
! ...
DO i = 1, size(arr)
IF (arr(i) > min) THEN
???
ENDIF
ENDDO
allocate(Indices)
END SUBROUTINE COMP