배열의 행을 뒤집기 위해 서브 루틴을 작성하려고합니다. 다음은 작동하지만 입력 arr의 유형을 명시 적으로 선언합니다. 따라서 유형의 실제 배열에 대해 동일한 작업을 수행하려면 별도의 서브 루틴이 필요합니다. 분명히 임의의 유형의 배열을 허용하는 방법이 있습니다. 누군가가 구문을 도와 줄 수 있습니까? 감사!fortran 서브 루틴 : 임의 유형의 배열
SUBROUTINE flipud(arr)
integer, dimension(:,:), intent(inout) :: arr
integer, dimension(:,:), allocatable :: tmp
integer i, j, nrow, ncol, ierr
nrow = size(arr, 1)
ncol = size(arr, 2)
allocate(tmp(nrow, ncol), STAT=ierr)
tmp(:,:) = arr(nrow:1:-1, :)
arr = tmp
deallocate(tmp)
END SUBROUTINE flipud
난 그냥 표현'편곡 =의 편곡 사용합니다 (nrow : 1 : -1 :)' –
는 동의했다. 그런 간단한 작업을 위해 추상화의 추가 레이어를 도입하는 이유는 무엇입니까? –
@VladimirF, 찍은 시점. 아마 포트란이 내 강한 옷이 아니라고 말할 수 있습니다. 나는 실제로 그렇게하고 있었고 작동하지 않았고 구문이 내가 생각했던대로 작동하지 않는지 궁금했습니다. (이것은 실제로 ascii 파일을 파싱하는 큰 문제의 일부입니다.하지만 거꾸로 뒤집혀서 또는 어떤 것으로 바뀌 었습니다. 그리고 디버깅하려고합니다. 다른 문제로 인해 발생했을 것입니다 ...) 어쨌든 , 감사; 나는 변화를 만들었다. –