Foro de elhacker.net

Programación => Programación General => Mensaje iniciado por: Charderak en 4 Mayo 2010, 19:29 pm



Título: Duda sobre Fortran
Publicado por: Charderak en 4 Mayo 2010, 19:29 pm
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
  1. PROGRAM PRACTICA3
  2. OPEN (UNIT=1, FILE='Divisores.txt')
  3. OPEN (UNIT=2, FILE='Divisores Pares.txt')
  4. OPEN (UNIT=3, FILE='Divisores Impares.txt')
  5. 100 FORMAT (/, I10)
  6. INTEGER n, i, j, k, d, a, b
  7. PRINT *, 'Introduzca un número'
  8. READ *, n
  9. DO d=1, n/2
  10. a=MOD(n, d)
  11. IF (a==0) THEN
  12. WRITE (1, 100) d
  13. i=i+1
  14. END IF
  15. b=MOD(d,2)
  16. IF (b==0) THEN
  17. WRITE (2, 100) d
  18. j=j+1
  19. ELSE
  20. WRITE (3, 100) d
  21. k=k+1
  22. END IF
  23. END DO
  24. CLOSE (1)
  25. CLOSE (2)
  26. CLOSE (3)
  27. PRINT *, 'Hay ', i, ' divisores ', j, ' pares ', k, ' impares'
  28. STOP
  29. 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!


Título: Re: Duda sobre Fortran
Publicado por: biribau en 5 Mayo 2010, 19:23 pm
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í


Título: Re: Duda sobre Fortran
Publicado por: skapunky en 5 Mayo 2010, 19:35 pm
Citar
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í

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...


Título: Re: Duda sobre Fortran
Publicado por: Charderak en 7 Mayo 2010, 15:56 pm
Era lo que decía biribau, las variables hay que declararlas al principio, antes de los OPEN. Muchas gracias!