2012-11-21 3 views
0

디버그 말했다, 나는 오류를 받고 있어요 :포트란 유형 불일치 오류

"(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 
+0

당신은'p1'과'p2'를 선언하지 않았고 의미있는 값을주지 않았습니다. 'IMPLICIT NONE'이 없으면 컴파일러는 암시 적으로 REAL 형식의'p1'과'p2'를 생성합니다. 따라서 오류가 발생합니다. –

답변

4

힌트 : "암시 적 없음"을 시도하십시오. 항상 좋은 생각입니다.

+0

이제 "p1 .. 암시 적 유형이 없습니다"라는 오류 메시지가 표시됩니다. – imkendal

+3

음, 명시 적 유형 (예 : 유형 선언)을 지정해야합니다. –