[OT] Re: duda con Fortran
Hector Barrios Molano
hebm12 en gmail.com
Jue Ago 21 07:01:44 BST 2008
Muchas gracias muchachos por su colaboración y ayuda, que pena por el tema
un poco fuera del tema principal de la lista, pero yo tenía la esperanza que
me ayudaran y afortunadamente asi fué.
Me gustaría saber si les puedo seguir consultando mis dudas de este potente
lenguaje, ya que frecuentemente estoy haciendo programas con él, y si las
puedo poner en la lista de correo o que lugar me recomiendan, o si les puedo
escribir a algunos de ustedes en especial, quien se ofrece?, jejeje
Anoche encontré esta forma de leer el archivo:
open(unit=10,file='entrada.dat',status='unknown')
do while (ios == 0)
read(10,*, iostat=ios) buffer
if (ios==0) then
lineas=lineas+1
end if
end do
print*,'--------------------------------------------------------------------'
print*,'Dimension de la matriz ',lineas,' x ',lineas+1
print*,'--------------------------------------------------------------------'
allocate(temp((lineas+1),lineas))
rewind(10)
read(10,*)temp
ya que estoy leyendo matrices n x n+1 porque estoy haciendo un solver de
sistemas de ecuaciones.
El 20 de agosto de 2008 19:51, José Pablo Fonfría
<jpablo.fonfria en gmail.com>escribió:
> Hola Héctor,
>
> > Hola a todos!
> > Tengo un problemita con el leguaje Fortran, espero que alguien de las
> > tantas personas que leen los mensajes de la lista de correo pueda
> > ayudarme (espero que en la lista se pueda hacer la pregunta).
> >
> > Resulta que estoy haciendo un programa que lee una matriz a partir de un
> > archivo .dat, el problema es que necesito que el programa obtenga el
> > tamaño de la matriz sin necesidad de ingresar el tamaño de esta y que
> > tampoco se encuentre en el archivo donde está la matriz.
> >
> > Me pregunto si en Fortran se pueden usar los caracteres de fin de linea
> > para esto (si es posible), si no... no se que hacer por favor ayudenme.
> >
> > Gracias.
> >
>
> Es un proceso bastante manual pero sencillo. Al menos el que utilizo yo
> aunque seguro que hay otros más interesantes. Supón que abres el archivo
> donde tienes la matriz escrita. Haces un bucle para la lectura y la
> cortas cuando el programa encuentra el EOF. Sería algo así:
>
> ! Inicializamos la matriz A utilizando un valor fácilmente reconocible
> ! y que sepas que no va a aparecer en tus matrices.
>
> do i=1,1000
> do j=1,1000
> A(i,j)=-100
> enddo
> enddo
>
> ! Abrimos el archivo de datos.
>
> open(10,file='datos.dat',status='old')
>
> ! Inicializamos un contador
>
> n=0
>
> ! Hacemos un bucle haciendo variar los índices entre
> ! 1 y un valor alto.
> ! Al leer los números usamos la opción "end" para dirigir
> ! al programa a la línea que nos interese cuando haya llegado
> ! al EOF.
> ! En cuanto al formato de lectura, a mi me gusta usarlo. Queda todo
> ! muy ordenado y me parece más adecuado para manejar datos.
> ! Además, este proceso no funciona sin formato.
>
> do i=1,1000
> read(10,20,end=15)(A(i,j),j=1,1000)
> n=n+1
> enddo
> 15 close(10)
> 20 format(1000(i2,1x)) !ejemplo de formato para este caso
>
> De esta forma podrías leer la matriz completa sin conocer sus
> dimensiones. El número de filas es igual a n, puesto que cuando el
> programa llega al EOF sale del bucle y el número n es el número de filas
> leídas. Para hallar el número de columnas basta con utilizar el número
> al cual has inicializado la matriz A.
>
> m=0
> do j=1,1000
> if(A(1,j).eq.-100)goto 30
> m=m+1
> enddo
> 30 continue
>
> En fortran 90/95 se puede hacer de forma más sencilla. También échale un
> vistazo a la lectura directa de archivos. Es posible que te sirva.
>
> El libro siguiente siempre me ha ayudado mucho:
>
> http://www.star.le.ac.uk/~cgp/prof77.html<http://www.star.le.ac.uk/%7Ecgp/prof77.html>
>
> Un libro básico de fortran 90 lo puedes encontrar aquí:
>
> http://mat21.etsii.upm.es/ayudainf/aprendainf/Fortran90/Fortran90.pdf
>
> Por supuesto, también puedes utilizar (te lo aconsejo) el manual de tu
> compilador para conocer las mejores opciones dependiendo de lo que
> quieras hacer. Y sigue buscando en la red, que hay mucha información.
>
> Espero que esto te sirva. Si te hace falta más ayuda, vuelve a escribir
> pero esta vez añade un [OT] en el asunto. De ese modo te evitarás
> respuestas como la de David (o al menos las minimizarás). Yo creo que es
> muy probable que siempre encuentres aquí a alguien que te ayude en este
> tipo de cosas.
>
> Un saludo.
>
> Pablo.
>
> --
> ubuntu-es mailing list
> ubuntu-es en lists.ubuntu.com
> https://lists.ubuntu.com/mailman/listinfo/ubuntu-es
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: https://lists.ubuntu.com/archives/ubuntu-es/attachments/20080821/53b254ac/attachment.htm
Más información sobre la lista de distribución ubuntu-es