В моем do l oop мне нужен доступ к i + 1-му элементу массива. Для последнего элемента это должно быть первое значение в массиве.
Так что циклически перебирая массив / 1,2,3 / я бы хотел получить результат 2,3,1,2,3, ...
Я написал немного неуклюжий способ сделать это, используя переменную для индекса и MOD, мне было интересно, есть ли лучшее решение? Я также не хочу замедлять остальную часть кода (например, если я делаю эту операцию сотни тысяч раз).
program array_test
implicit none
real, dimension(3) :: arr
integer :: i, idx
data arr /1.0,2.0,3.0/
do i=1,size(arr)+2
idx = mod(i,size(arr))
write(*,*) "Index i+1", idx+1, arr(idx+1)
enddo
end program
, которая выдает
Index i+1 2 2.00000000
Index i+1 3 3.00000000
Index i+1 1 1.00000000
Index i+1 2 2.00000000
Index i+1 3 3.00000000