어떠한 배열에 관한 책을 찾아보아도 이런것에 관한 답안을 찾을수가 없네요~~
그러니깐..
맨 처음에 배열의 크기를
allocate(ped(3,num))
이라고 할당을 해주었는데요...!num은 입력받은 고정의 숫자입니다.
근데 이 ped 라는 배열이
반복 구문(do)를 통해서 1씩 증가가 되거든요..즉 ped(3,num+addn)
addn이라는 변수가 1씩 증가가 되면서 점점 배열의 크기가 커지게 되는데
크기의 할당이 되지 않아서 에러를 내더군요..
제가 좀 두서없이 썼는데요..
궁금한거는요..
배열의 크기를 계속해서 바꿔줄수 있는지요??
궁금해서요...
그럼 꼭 부탁드립니다.
밑에는 제가 기존에 해놓은건데요..에러를 내서요..부분만 복사해서 올리겠습니다.
addns=0
DO i=1,Num
if (ped(2,i) /= 0) then
loop1:Do j=1,Num+addns
if (ped(2,i) == ped(1,j)) exit loop1
if (j==Num+addns) then
allocate(ped(3,num+addns))
addns=addns+1
write(*,*) ped(2,i),addns
write(2,*) ped(2,i),addns
end if
End do loop1
end if
End do
기존에 위에는 allocate(ped(3,num))을 할당 했었습니다...
다른 방법이 있느지라도 좀 부탁드리겠습니다...
그리고, 한가지 더 질문이 있는데요.. 어느 배열속에서 중복된값이 있으면 중복되는 데이터들을 지우고 싶은데 이는 어떠한 구문을 공부하면 되는지요?? delete구문이 있는거 같은데 이는 record의 번호를 매겨서 지우는데 이것역시 배열의 크기 지정에서 에러를 뿜어낼 것 같아서요..답변좀 부탁드리겠습니다.
Fortran 2003에서 추가된 "MOVE_ALLOC Intrinsic Subroutine"을 사용하시면 될겁니다. Syntax: CALL MOVE_ALLOC (FROM, TO) FROM :May be of any type and rank and must be allocatable. TO : Must be type compatible with FROM, have the same rank, and be allocatable
첫댓글 저도 해보지는 않아서 잘 모르겠습니다만... 배열의 크기를 계속 바꾸시려면, allocate하기전에 deallocate를 해주시는 게 좋을 듯 싶습니다.
deallocate하지 않으면 메모리에러가 납니다.
deallocate를 하게되면 배열의 크기를 다시 설정할 수는 있겠지만, 기존에 그 ped라는 배열속의 데이터 들이 다 날라가는것 같아서요...같은 배열속에서 기존의 값들은 저장된상태에서 데이터를 하나씩 더넣구 싶어서요..
그리고, 한가지 더 질문이 있는데요.. 어느 배열속에서 중복된값이 있으면 중복되는 데이터들을 지우고 싶은데 이는 어떠한 구문을 공부하면 되는지요?? delete구문이 있는거 같은데 이는 record의 번호를 매겨서 지우는데 이것역시 배열의 크기 지정에서 에러를 뿜어낼 것 같아서요..답변좀 부탁드리겠습니다.
Fortran 2003에서 추가된 "MOVE_ALLOC Intrinsic Subroutine"을 사용하시면 될겁니다. Syntax: CALL MOVE_ALLOC (FROM, TO) FROM :May be of any type and rank and must be allocatable. TO : Must be type compatible with FROM, have the same rank, and be allocatable
감사합니다..근데요, 포트란 2003 이면 인텔 비쥬얼 포트란 컴파일러9.0을 말씀하시는건가요?? 아니면 CVF에서도 그냥 사용할수 있는 구문인가요?? 컴파일러를 다시 구해야하는 건가요...
Fortran 2003 기능이 추가된 complier이면 되는데, CVF는 개발지원이 중단된 상태이며, intel complier도 Intel Visual Fortran CompilerPro v9.0.029의 release notes에 보니 지원된다고 합니다..
답변감사합니다..^^ 이제 인텔 컴파일러로 넘어가야하는건가요..!! 이제까지 CVF 밖에 서보질 않아서요^^ 감사드립니당...!! 언넝 구해서 해봐야겠네요!!