[Fwd: Re: [OT] Re: duda con Fortran]
José Pablo Fonfría
jpablo.fonfria en gmail.com
Jue Ago 21 17:28:35 BST 2008
Reenvío el mensaje que me ha llegado de Jovan David.
Un saludo.
-------- Mensaje original --------
Asunto: Re: [OT] Re: duda con Fortran
Fecha: Thu, 21 Aug 2008 11:15:47 -0500
De: jovan david monsalve lopez <wwwjovandavid en gmail.com>
Para: jpablo.fonfria en gmail.com
Referencias:
<626640da0808192256h77a87697l588d744450ccfe77 en mail.gmail.com>
<48ACBC25.9030102 en gmail.com>
<626640da0808202301l17c62fc7tc2eedd1710ff8505 en mail.gmail.com>
<48AD9212.10703 en gmail.com>
que bien que pudiste resolver el problema, para la proxima no olvides
colocar un ot, creeme que hay muchas personas que nos interesa la
programacion y vas a encontrar la ayuda que necesitas.
un saludo
El 21 de agosto de 2008 11:04, José Pablo Fonfría
<jpablo.fonfria en gmail.com <mailto:jpablo.fonfria en gmail.com>> escribió:
Hola Héctor,
> 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é.
De nada. Para eso están las listas.
> 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
Por mi parte no tengo inconveniente en que hagas preguntas. Siempre que
pueda te responderé, eso sí, desde mi conocimiento del tema que en
ocasiones puede ser limitado. En cuanto a la lista, como ya te dije,
añade un [OT] en el asunto a fin de que la gente quede advertida de que
el tema no trata un tema enteramente de GNU/Linux (K)Ubuntu.
> 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.
Pues si te funciona, a mi me parece perfecto. Tiene buena pinta.
Felicidades y un saludo.
Pablo.
> El 20 de agosto de 2008 19:51, José Pablo Fonfría
> <jpablo.fonfria en gmail.com <mailto:jpablo.fonfria en gmail.com>
<mailto:jpablo.fonfria en gmail.com <mailto: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>
> <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
<mailto:ubuntu-es en lists.ubuntu.com>
<mailto:ubuntu-es en lists.ubuntu.com <mailto:ubuntu-es en lists.ubuntu.com>>
> https://lists.ubuntu.com/mailman/listinfo/ubuntu-es
>
>
--
ubuntu-es mailing list
ubuntu-es en lists.ubuntu.com <mailto:ubuntu-es en lists.ubuntu.com>
https://lists.ubuntu.com/mailman/listinfo/ubuntu-es
--
Jovan David
Carpe Diem
usuario linux # 463088
Lista de correo de Colibri
Colibri en listas.el-directorio.org <mailto:Colibri en listas.el-directorio.org>
http://listas.el-directorio.org/cgi-bin/mailman/listinfo/colibri
El Directorio, el sitio del Software Libre en Colombia:
http://www.el-directorio.org
Más información sobre la lista de distribución ubuntu-es