我收到错误
" Fortran期望在(1)"
的表达中使用右括号
在子例程中指定声明类型的组件时。 (1)出现在子程序中a,b,c赋值的第二个%下面。我究竟做错了什么?提前谢谢。
program prototipo
implicit none
!DECLARACIÓN DE TIPOS
type triangulo
integer :: vertices(3) !VECTOR DE VÉRTICES DE CADA TRIÁNGULO EN NUBE DE VÉRTICES
real (kind = 8) :: X(3) !VECTOR DE COORDENADAS X DE LOS TRES VÉRTICES DEL TRIÁNGULO
real (kind = 8) :: Y(3) !VECTOR DE COORDENADAS Y DE LOS TRES VÉRTICES DEL TRIÁNGULO
real (kind = 8) :: area_triang !ÁREA DEL TRIÁNGULO
end type triangulo
!irrelevant code removed
contains
subroutine Area (V)
implicit none
type(triangulo), intent(inout) :: V !VECTOR DE TRIÁNGULOS
integer :: i !ÍNDICE
real (kind = 8) :: a, b, c !LONGITUDES DEL LADO DE CADA TRIANGULO
real (kind = 8) :: t !TÉRMINO PARA CALCULAR LA ALTURA
real (kind = 8) :: h !ALTURA
do i = 1, 8042
a = sqrt(((V(i)%X(2) - V(i)%X(1))**2) + ((V(i)%Y(2) - V(i)%Y(1))**2))
b = sqrt(((V(i)%X(3) - V(i)%X(1))**2) + ((V(i)%Y(3) - V(i)%Y(1))**2))
c = sqrt(((V(i)%X(3) - V(i)%X(2))**2) + ((V(i)%Y(3) - V(i)%Y(2))**2))
t = (sqrt((a + b - c)*(a - b + c)*(-a + b + c)*(a + b + c))) / 2.D0
h = t / b
V(i)%area_triang = (b*h) / 2.D0
end do
end subroutine Area
end program
答案 0 :(得分:1)
您错误地将V声明为子程序Area中的单个三角形而不是三角形数组。将您的声明更改为
type(triangulo), intent(inout) :: V(:) !VECTOR DE TRIÁNGULOS
并编译。