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 |