Можно ли индексировать содержимое массива с помощью функции транспонирования?
Можно ли в фортране индексировать элементы массива, подчиненные внутреннему? Я имею в виду, в частности, transpose
функция. В следующем коде я создаю и инициализирую массив с именем A и пытаюсь проиндексировать значение внутри транспонированного массива
program test
integer, dimension(5,3) :: A
integer :: i,j
A = reshape((/1,2,3,4,5,6,7,8,9,10,11,12,13,14,15/), shape(A))
print *, transpose(A)(1,1)
end program test
однако я получаю синтаксическую ошибку следующим образом:
** D: \ TEMP \ FortranTest> gfortran -o Тест Transposecommand.f90 Transposecommand.f90: 11: 22:
print *, transpose (A) (1,1) 1 Ошибка: синтаксическая ошибка в операторе PRINT в (1)**
Есть ли способ сделать это, не объявляя отдельную переменную, а затем присваивая ей транспонированный массив? Я хотел бы избежать объявления новых переменных, если это возможно...
1 ответ
Нет, Fortran не поддерживает такого рода индексацию в результатах функций. Вам придется придумать собственное элегантное решение (он же клудж). Мой собственный примет во внимание
transpose(a)(i,j) == a(j,i)