Duda sobre Fortran

Iniciado por Charderak, 4 Mayo 2010, 19:29 PM

0 Miembros y 1 Visitante están viendo este tema.

Charderak

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:

Código (pascal) [Seleccionar]
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!

biribau

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í

skapunky

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 XXXX
Units
{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...
Killtrojan Syslog v1.44: ENTRAR

Charderak

Era lo que decía biribau, las variables hay que declararlas al principio, antes de los OPEN. Muchas gracias!