2016-08-09 2 views
0

Мне нужно работать с файлом, который может изменить число строк из-за предыдущей операции (из сценария python), и это число строк будет использоваться для объявления другой переменной, как это.Как объявить неизвестное количество строк из файла

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

Как я могу правильно объявить NumberOfLine. Благодарю. Я могу передать число строк из python. Так что я знаю, что число после операции python завершено

+0

'реального (8)' это плохо! http://stackoverflow.com/documentation/fortran/939/data-types/4390/precision-of-floating-point-numbers#t=201608091021532182103 –

+0

Спасибо, я просто научился использовать fortran на несколько дней, эта помощь много. – Mireanuw

ответ

2

Если вы объявите параметр, его значение должно быть исправлено во время компиляции. Таким образом, ваш integer, parameter :: newDimension = ANumber * NumberOfLine не может работать, если компилятор не знает значения NumberOfLine.

Что вы можете сделать, это использовать размещаемые массивы:

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

Спасибо !, Я никогда не пишу Fortran раньше, эта помощь много – Mireanuw

+0

Мое первоначальное решение было на ваш вопрос, поэтому я использовал 'REAL (8)', который вы сделали, но на самом деле не должен. Теперь я заменил его более гибким методом получения 64-битных плавающих чисел. – chw21

+0

Вижу, я постараюсь понять, что такое числа с плавающей запятой. – Mireanuw

Смежные вопросы