저는 Silverfrost FTN95를 사용하고 있습니다. 전문가는 아니기 때문에 논리 변수의 배열을 입력으로 반환하는 함수를 작성하는 데 도움이 필요합니다. 정수 변수의 배열. 거짓이면 0, 참이면 1. 난 그냥 내가 그것을 구현하기 위해 노력하는 방법 semplify이 간단한 코드를 작성 :논리적 유형의 배열을 정수/더블 유형의 배열로 변환
program main
logical, dimension(2,1) :: a
integer, dimension(2,1) :: b
integer, dimension(2,1) :: toInt
a(:,1)=.false.
b=toInt(a)
write(*,*)b
end program
function toInt(log) result(val)
logical, dimension(2,1), intent(in) :: log
integer, dimension(2,1) :: val
do i=1,2
if (log(i,1)) then
val(i,1) = 1
else
val(i,1) = 0
end if
end do
end function
이 코드는 날이 오류를 제공합니다 : 배열 범위 첨자 예상 INTEGER 식을 변수 'A'에서 (정수형이 없습니다 줄 "b = toInt (a)"), 그리고 오류가 무엇인지 찾을 수 없습니다. 내 문제를 해결하기위한 제안이나 다른 방법이 도움이 될 것입니다. 감사
도움말을 요청하기 전에 항상 '암시 적 없음'을 사용하십시오! 왜 사용하지 않는 것이 위험한 지 반드시 읽어보십시오.이전 프로그램에 대한 몇 가지 예외가 있지만 여기서는 볼 수 없습니다. 또한 가능한 한 모듈을 사용하는 것이 좋습니다. –
전체 코드에 따라 가장 계산 효율이 높은 방법은 논리 배열을 전혀 사용하지 않는 것입니다. 'if (a (i))'를'if (b (i) .ne.0)'로 대체하면 코드 편의성을 제외하고는 아무것도 들지 않습니다. – agentp