2016-08-09 26 views
0

Ich muss mit einer Datei arbeiten, die Anzahl der Zeile aufgrund der vorherigen Operation ändern (aus Python-Skript), und diese Nummer der Zeile wird verwendet, um die andere Variable zu deklarieren, so was.Wie die unbekannte Anzahl der Zeile aus der Datei zu deklarieren

integer NumberOfLine !This is not work,Of course. 
real(8) F(FixedDimension,NumberOfLine) 
integer, parameter :: NewDimension = ANumber*NumberOfLine 

Wie kann ich NumberOfLine ordnungsgemäß deklarieren? Vielen Dank. Ich kann die Nummer der Zeile von Python übergeben, also grundsätzlich kenne ich diese Zahl nach dem Python-Vorgang abgeschlossen

+0

'real (8)' ist schlecht! http://stackoverflow.com/documentation/fortran/939/data-types/4390/precision-of-floating-point-numbers#t=201608091021532182103 –

+0

Danke !, ich lerne nur, Fortran für ein paar Tage zu verwenden, diese Hilfe viel. – Mireanuw

Antwort

2

Wenn Sie einen Parameter deklarieren, muss sein Wert zur Kompilierzeit festgelegt werden. Ihr integer, parameter :: newDimension = ANumber * NumberOfLine kann nicht funktionieren, wenn der Compiler den Wert NumberOfLine nicht kennt.

Was Sie tun können, ist zuweisbaren Arrays zu verwenden:

program test_alloc 

    implicit none 
    integer, parameter :: dp = selected_real_kind(p=15) 
    real(kind=dp), dimension(:,:), allocatable :: F 
    integer :: i 
    integer, parameter :: FixedDimension = 10 

    print *, "Enter i" 
    read(*, *) i 

    allocate (a(FixedDimension, i)) 
    a = i 
    print *, a 

end program test_alloc 
+0

Danke !, ich schreibe nie Fortran, diese Hilfe viel – Mireanuw

+0

Meine ursprüngliche Lösung war zu Ihrer Frage, so dass ich die 'REAL (8)' verwendet, die Sie getan haben, aber wirklich nicht sollten. Ich habe es jetzt durch eine flexiblere Methode ersetzt, um 64-Bit-Fließkommazahlen zu erhalten. – chw21

+0

Ich sehe, ich werde versuchen zu verstehen, was Gleitkommazahlen ist. – Mireanuw