поиск конкретных индексов с помощью массива указателей
Я относительно новичок в Фортране и сейчас часами ломаю голову над одной вещью:
Я хочу написать подпрограмму для поиска индексов для конкретных элементов в реальном 1D-массиве (данный подпрограмме в качестве входных данных).
Я сгенерировал массив с 100 случайными реалами, который называетсяarr
и теперь хочу определить индексы тех элементов, которые больше реальной стоимостиmin
, который также передается в подпрограмму.
Плюс, в конце я хотел бы иметь указатель, который я бы выделил в конце, что, как мне сказали, было бы лучше, чем использование массиваindices
содержащий индексы, когда-то найденные.
Я просто не нашел, как это решить, у меня был следующий подход:
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