0

我怎样才能修复中的Unclassifiable statement错误if () to go?错误在

 DO J=1,N
    IF ( I .EQ. J )GO TO 3
    Y=Y-A( I , J )*X( J )
 3 END DO

    program gausssiedel
          INTEGER, PARAMETER :: M=100
          INTEGER :: NMI, IJK , ITER, I , J
          real , dimension (M,M) :: A
          REAL,DIMENSION(M) :: B,X
          
          WRITE(6 , * ) 'ECUACIONES DE ENTRADA. '
          OPEN(2 ,FILE= 'datos . dat ' ,STATUS='OLD' )
          READ(2 , * )N,NMI,NAPROX ! LEE DATOS DEL ARCHIVO DE ENTRADA
          APROX=10.0**(-NAPROX)
          
          DO I =1,N
          READ( 2 , * ) (A( I , J ) , J=1,N) ,B( I )
          WRITE( 6 , * ) (A( I , J ) , J=1,N) ,B( I )
          END DO
          CLOSE (2)
          
          DO I =1,N
             X( I ) = 0.0 ! PRIMERA APROXIMACION DE LA SOLUCION
          END DO
          
          WRITE(6 , * ) 'RESULTADOS'
          WRITE( * , * ) ! IMPRIME RESULTADOS
          DO ITER=1,NMI
             WRITE( * , * )ITER , (X( J ) , J=1,N)
             IJK = 0
             DO I =1,N
                Y=B( I )
                DO J=1,N
                   IF ( I .EQ. J )GO TO 3
                   Y=Y-A( I , J )*X( J )
              3 END DO
                    Y=Y/A( I , I )
                    IF (ABS( (X( I)-Y)/Y ) .GT.APROX) IJK=1
                    X( I ) = Y
             END DO
                   IF ( IJK .EQ.0 )GO TO 6
          END DO
          WRITE( * , * ) 'NUMERO DE ITERACIONES:  ' ,NMI
        6 CONTINUE
          pause
          
          end program

4

1 回答 1

2

你希望 do-loop 做什么?您是否只是想跳过该i == j值或退出 do-loop。您可以在不标记end do语句的情况下实现两者。

跳过i == j案例:

DO J=1,N
  IF ( I .EQ. J ) cycle
  Y=Y-A( I , J )*X( J )
END DO

退出循环案例:

DO J=1,N
  IF ( I .EQ. J ) exit
  Y=Y-A( I , J )*X( J )
END DO
于 2020-08-30T17:45:13.307 回答