Fortran Coder

标题: 动态数组输出的问题 [打印本页]

作者: matliu    时间: 2016-1-14 09:53
标题: 动态数组输出的问题
最近在使用动态数组,我在数组输出中遇到了一个问题,具体的和网上的一个问题一样:
一个动态2维数组,现在要将该2维数组以行列的格式输出,这个输出语句该怎么写?

integer         ORDER, row, col
real,dimension(:,:),allocatable::S!动态数组S
read (*,*) ORDER
allocate(S(ORDER,ORDER))                !分配S空间
! 分配S中元素
do row=1, ORDER
         !!??  此处的输出语句要求在一行上输出数组S中一行ORDER个元素
enddo

谢谢大家了!


作者: vvt    时间: 2016-1-14 11:27
[Fortran] 纯文本查看 复制代码
integer         ORDER, row, col
real,dimension(:,:),allocatable::S!动态数组S
read (*,*) ORDER
allocate(S(ORDER,ORDER))                !分配S空间
! 分配S中元素
do row=1, ORDER
  Write(*,*) S( : , row )
enddo

作者: li913    时间: 2016-1-14 16:20
http://fcode.cn/guide-45-1.html
FAQ之 文件行列与二维数组行列
作者: matliu    时间: 2016-1-14 23:14
o, 我忘了说,每行输出的实数要有一定的格式,例如 F10.5
作者: poorness    时间: 2016-1-29 22:59
[Fortran] 纯文本查看 复制代码
integer    ORDER, row, col
real,dimension(:,:),allocatable::S
read (*,*) ORDER
allocate(S(ORDER,ORDER))      

character(len=40) :: fmtstring="(??(1x,f10.5))"
write(fmtstring(2:3),"(I2.2)") int(ORDER)

do row=1,ORDER
    write(*,fmtstring) S(row,:)
enddo

作者: pasuka    时间: 2016-1-31 10:20
本帖最后由 pasuka 于 2016-1-31 10:22 编辑

直接用新标准的*就行,不用这么折腾
[Fortran] 纯文本查看 复制代码
program ex
implicit none
integer, parameter:: rows=5, cols=4
integer:: i, j
real(kind=8), allocatable:: array(:, :)
if(allocated(array))deallocate(array)
allocate(array(rows, cols))
array = 2.5D0
do i=1, rows
        write(*, '(*(1x, f12.5))')array(i, :)
enddo
end program


作者: poorness    时间: 2016-2-2 20:38





欢迎光临 Fortran Coder (http://bbs.fcode.cn/) Powered by Discuz! X3.2