PDA

View Full Version : aiutino fortran


peter2
14-11-2005, 17:17
come si fa ad utilizzare un valore letto da un file esterno come dimensione di un array?
se faccio così il compilatore mi dice (giustamente) che l'istruzione REAL non può essere nella sezione di esecuzione (dopo un DO)

PROGRAM PROVA11
!
!
OPEN (85,file='parametri_simulazione.txt',status='unknown') ! input
!
DO WHILE (.NOT.EOF(85))
! numero celle
READ (85,*) ncelle
ENDDO

REAL CELLE(0:NCELLE)

STOP
END

peter2
15-11-2005, 11:31
ho trovato che si può fare con ALLOCATABLE, ma non capisco come tali variabili possano essere poi passate ad una FUNCTION e viceversa visto che non possono comparire all'interno di un istruzione COMMON.

:help:

peter2
17-11-2005, 15:08
ri :help:

peter2
18-11-2005, 17:05
up

leadergl
19-11-2005, 09:19
credo che pochi rispondono perchè pochi usano il "fortran"...compreso me :P
però ti posso dire come avrei fatto io in un generico linguaggio:

// dichiarazione variabili globali
Dichiarazione Array di dimensione 0 (o 1..come ti pare)


//corpo del programma
apertura file in lettura
lettura dai da file
chiusura file
redimensionamento array in base al numero letto...

ora te lo scrivo in VB:

Option Explicit
Dim Vettore(0 to 1) as Integer 'dichiaro vettore di 2 elementi interi

Private Sub Ridimensione()
Dim nFile as Integer
Dim iDim as Integer

nFile=FreeFile()
Open "testo.txt" for Input as nFile 'apro il file in lettura
Input nFile, iDim 'leggo un intero dal file
Close nFile 'chiudo il file

ReDim Vettore(0 to nDim) as Integer 'redimensiono il vettore perdendo i dati precedenti

ReDim Preserve Vettore(0 to nDim) as Integer 'redimensiono conservando i dati precedenti

End Sub

peter2
20-11-2005, 17:06
ti ringrazio per la risposta.
in effetti è come usare l'istruzione ALLOCATE, il problema è che quell'array poi non si può usare nelle sub o function...
il VB è molto più flessibile.
ciao e grazie ancora