Fortran lettura file
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:
Inoltre, ho provato con una diversa tipologia di ciclo "do" e cioè:
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
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