[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