디버그 말했다, 나는 오류를 받고 있어요 :포트란 유형 불일치 오류
"(1)에서 인수 'P1'의 형식이 일치; 통과 REAL (4) TYPE (포인트)까지 "
나는 어디에서 오류가 발생하는지 알 수 없습니다. 동일한 오류로 p1과 p2 대신 각 함수에 전달할 다른 변수를 정의 해 보았습니다. 어떤 아이디어?
MODULE PointType
TYPE POINT
REAL:: x
REAL:: y
END TYPE
CONTAINS
FUNCTION arePointsEqual(p1, p2)
REAL:: arePointsEqual
TYPE(POINT), INTENT(IN):: p1
TYPE(POINT), INTENT(IN):: p2
LOGICAL :: isEqual
IF (p1%x == p2%x .AND. p1%y == p2%y) THEN
isEqual = .TRUE.
ELSE
isEqual = .FALSE.
END IF
END FUNCTION
FUNCTION arePointsNotEqual(p1,p2)
REAL:: arePointsNotEqual
TYPE(POINT), INTENT(IN):: p1
TYPE(POINT), INTENT(IN):: p2
LOGICAL :: isNotEqual
IF (p1%x == p2%x .AND. p1%y == p2%y) THEN
isNotEqual = .FALSE.
ELSE
isNotEqual = .TRUE.
END IF
END FUNCTION
FUNCTION distance(p1, p2)
REAL:: distance
TYPE(POINT), INTENT(IN):: p1
TYPE(POINT), INTENT(IN):: p2
distance = SQRT((p2%x - p1%x)**2 + (p2%y - p1%y)**2)
END FUNCTION
END MODULE
!MAIN PROGRAM BELOW THIS LINE
PROGRAM Project3
USE PointType
PRINT *, arePointsEqual(p1, p2)
PRINT *, arePointsNotEqual(p1, p2)
PRINT *, distance(p1, p2)
END PROGRAM Project3
당신은'p1'과'p2'를 선언하지 않았고 의미있는 값을주지 않았습니다. 'IMPLICIT NONE'이 없으면 컴파일러는 암시 적으로 REAL 형식의'p1'과'p2'를 생성합니다. 따라서 오류가 발생합니다. –