Я написал простую программу в Fortran90 для вычисления площади треугольника. Пользователь вводит три стороны треугольника, а затем программа выводит эту область. Достаточно просто.gfortran не скомпилирует реальные переменные
MODULE Triangle_Operations
IMPLICIT NONE
CONTAINS
FUNCTION Area(x,y,z)
REAL :: Area ! function type
REAL, INTENT(IN) :: x, y, z
REAL :: theta, height
theta = ACOS((x**2+y**2-z**2)/(2.0*x*y))
height = x*SIN(theta); Area = 0.5*y*height
END FUNCTION Area
END MODULE Triangle_Operations
PROGRAM Triangle
USE Triangle_Operations
IMPLICIT NONE
REAL :: a, b, c, Area
PRINT *, 'Welcome, please enter the &
&lengths of the 3 sides.'
READ *, a, b, c
PRINT *, 'Triangle''s area: ', Area(a,b,c)
END PROGRAM Triangle
Когда я компилирую это с gfortran
gfortran triangle1.f90
, это ошибка я получаю:
triangle1.f90:16.25:
REAL :: a, b, c, Area
1
triangle1.f90:14.8:
USE Triangle_Operations
2
Error: Symbol 'area' at (1) conflicts with symbol from module 'triangle_operations', use-associated at (2)
triangle1.f90:19.13:
READ *, a, b, c
1
Error: Symbol 'a' at (1) has no IMPLICIT type
triangle1.f90:19.16:
READ *, a, b, c
1
Error: Symbol 'b' at (1) has no IMPLICIT type
triangle1.f90:19.19:
READ *, a, b, c
1
Error: Symbol 'c' at (1) has no IMPLICIT type
Почему именно будет ли ошибка брошена для переменных a,b,c
? Я явно определил их как реалы.
Он компилирует (и работает) отлично для меня. Когда я впервые это сделал, я назвал файл 't.f' и дал ошибки, похожие на ваши. Когда я переименовал его в 't.f90', он скомпилировался в порядке. – wallyk
@wallyk Странно. У меня есть файл с именем 'triangle1.f90'. Возможно, мне нужно изменить расширение или, возможно, использовать конкретный компилятор? Я до сих пор не знаю ... – ShanZhengYang
Я думаю, что вы получаете каскад ошибок из путаного компилятора из-за множественного объявления «Area» (первая ошибка). В основной программе нет необходимости объявлять ее REAL. Это уже объявлено в модуле. Удаление декларации фиксирует все. – RussF