Fortran lettura file

michele038
Salve sono alle prime armi con il fortran e sto cercando di imparare qualcosa. Negli ultimi giorni sto cercando di creare un programma che legga dei numeri reali da una tabella posta in un file txt e stamparli sullo schermo, ma con scarso successo. Infatti, non so come mai (uso netbeans) il compilatore, con questo primo codice scritto giù, mi porti un errore del tipo: at line 10 of file asd.f95 (unit=8,file='asd.txt') ed al rigo successivo Fortran runtime error: end of file. Da premettere che il file da cui attingere i valori è semplicemente una matrice 3x3, del tipo 1,2,3 poi a capo 4,5,6 e poi ancora a capo 7,8,9. Il codice in questione che uso è il seguente:
program lettura
real::a(100,100)
integer::m,n,i,j
print*,"Inserire il numero delle righe e delle colonne della matrice"
open (8,file='asd.txt',status='old')
read*,m,n

do i=1,m
   do j=1,n
      read(8,*) ,a(i,j)
      write(*,*) ,a(i,j)
    enddo
enddo
end



Inoltre, ho provato con una diversa tipologia di ciclo "do" e cioè:
program lettura
real::a(100,100)
integer::m,n,i,j
print*,"Inserire il numero delle righe e delle colonne della matrice"
open (8,file='asd.txt',status='old')
read*,m,n

do i=1,m
         read(8,*) (a(i,j),j=1,m)
      write(*,*) (a(i,j),j=1,m)
   enddo
end


In quest'ultimo caso riesco a scrivere la matrice sullo schermo, ma accadono cose strane quando si va nel debugger. L'array a(i,j) rimane sempre non determinato e questo è un problema perché con una versione successiva del programmino mi serve un determinato valore dell'array e il contatore j passa direttamente a 4.

Spero di essere stato chiaro e mi scuso ancora se non lo sono stato, tenterò di essere più chiaro, so inoltre che non è il modo più corretto di scrivere la dimensione dell'array se non si sanno le dimensioni, per questo vi chiedo anche con pazienza di spiegarmi la funzione "allocate" . Vi ringrazio in anticipo

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.