Я хочу создать массив NxN, размер которого равен количеству N значений, которые я ввожу.
Можете ли вы создать массив с размером введенного мной числа, а не с существующим объявлением переменной Fortran real * 8 Matrix (100, 100)?
Вы знаете о массивах Fortran allocatable
? Я почти уверен, что это дубликат, но я все еще не могу найти хороший
Для этого нужны размещаемые массивы.
program allocate_test
use iso_fortran_env, only: real64
implicit none
real(kind=real64), allocatable :: Matrix(:,:)
integer :: N
print *, "Enter size of square array: "
read(*, *) N
allocate(Matrix(N, N))
! Now you have an NxN Matrix.
deallocate(Matrix)
! Now you can select a new size of the Matix
end program allocate_test
Несколько вещей:
real*8
не является стандартным Фортраном. Я представил метод, который работает с компиляторами, совместимыми с Fortran 2008 (или новее). Используйте встроенную функцию selected_real_kind
для Fortran 90/95
Вы можете использовать это для создания массива разной длины, но вы не можете изменить ранг (размер) этой вещи. Например, в моем коде выше allocate(Matrix(N, N, N))
не будет работать.
Да, ты можешь. Получите книгу, описывающую язык Фортран. Он расскажет вам, как это сделать.