Buenas, estoy empezando a programar Fortran en la facultad y tengo problemas con este programa. El programa es el típico programita chorra para calcular los divisores de un número y decirte cuáles son. El código fuente que he hecho es el siguiente:
PROGRAM PRACTICA3
OPEN (UNIT=1, FILE='Divisores.txt')
OPEN (UNIT=2, FILE='Divisores Pares.txt')
OPEN (UNIT=3, FILE='Divisores Impares.txt')
100 FORMAT (/, I10)
INTEGER n, i, j, k, d, a, b
PRINT *, 'Introduzca un número'
READ *, n
DO d=1, n/2
a=MOD(n, d)
IF (a==0) THEN
WRITE (1, 100) d
i=i+1
END IF
b=MOD(d,2)
IF (b==0) THEN
WRITE (2, 100) d
j=j+1
ELSE
WRITE (3, 100) d
k=k+1
END IF
END DO
CLOSE (1)
CLOSE (2)
CLOSE (3)
PRINT *, 'Hay ', i, ' divisores ', j, ' pares ', k, ' impares'
STOP
END
El error que me sale es el siguiente: error FOR2588: Type declaration statement cannot occur here; me he metido en el Help pero no entiendo exactamente a qué se refiere, sólo que está dentro del DO.
A ver si alguien me puede ayudar, que seguro que luego es una chorrada de fallo. Muchas gracias!
No tengo ni papa de Fortran,pero voy a intentarlo, parece un error un poco típico de cualquier lenguaje: no será que no puedes declarar variables después de usar sentencias?
INTEGER n, i, j, k, d, a, b
debería ir entonces justo después de program
A ver si te funciona así
CitarNo tengo ni papa de Fortran,pero voy a intentarlo, parece un error un poco típico de cualquier lenguaje: no será que no puedes declarar variables después de usar sentencias?
INTEGER n, i, j, k, d, a, b
debería ir entonces justo después de program
A ver si te funciona así
No, eso no es, el Fortran e sun lenguaje que despues hizo una deriva en modula y después en pascal, en pascal o modula el orden es el siguiente:
Program XXXXUnits{Librerias declaradas}
Var{Declaracion de variables}
Begin{Codigo}
End.
Deberías decirnos exactamente la línea que te marca eso, no tengo compilador de Fortran...
Era lo que decía biribau, las variables hay que declararlas al principio, antes de los OPEN. Muchas gracias!