Finden bestimmter Indizes mit Zeigerarray

Ich bin relativ neu in Fortran und zerbreche mir jetzt stundenlang den Kopf über eine Sache:

Ich möchte ein Unterprogramm zum Finden der Indizes für bestimmte Elemente in einem realen 1D-Array schreiben (das der Routine als Eingabe übergeben wird).

Ich habe ein Array mit 100 zufälligen Reals generiert, genanntarr, und möchten nun die Indizes der Elemente ermitteln, die größer als ein realer Wert sindmin, das auch an das Unterprogramm übergeben wird.

Außerdem hätte ich am Ende gerne einen Zeiger, den ich am Ende zuweisen würde, von dem ich sagte, er wäre besser als die Verwendung eines Arraysindices die einmal gefundenen Indizes enthalten.

Ich habe gerade nicht gefunden, wie ich das lösen kann, ich hatte folgenden Ansatz:

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

Antworten auf die Frage(3)

Ihre Antwort auf die Frage