【问题标题】:Fortran expected a right parenthesis in expression at (1) - Derived types in a subroutineFortran 在 (1) 处的表达式中需要右括号 - 子例程中的派生类型
【发布时间】:2015-04-16 00:57:02
【问题描述】:

我得到了错误

“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

【问题讨论】:

  • 我忘了提,但是括号被选中并且没问题。这是关于其他事情的错误,因此我无法发现。我是 Fortran 新手,所以这可能是新手的错误。

标签: fortran subroutine triangulation derived-types


【解决方案1】:

您错误地将 V 声明为子程序 Area 中的单个三角形,而不是三角形数组。将您的声明更改为

type(triangulo), intent(inout) :: V(:)     !VECTOR DE TRIÁNGULOS

然后编译。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-18
    • 2014-05-15
    • 1970-01-01
    • 2013-02-06
    相关资源
    最近更新 更多