用fortran打印两个一维数组
我有两个一维数组。用fortran打印两个一维数组,fortran,Fortran,我有两个一维数组。 我想打印以下内容 阵列1:-姓名年龄国家 a 12中国b 13智利c 14印度 输出 name = a age =12 country = china name = b age =13 country = chile name = c age =14 country = india 如果设计为使用结构数组而不是数组结构,则此问题可能更容易解决。数组的结构方法看起来有点像 program nml1 implicit none type info(length)
我想打印以下内容 阵列1:-姓名年龄国家
a 12中国b 13智利c 14印度 输出
name = a age =12 country = china name = b age =13 country = chile name = c age =14 country = india
如果设计为使用结构数组而不是数组结构,则此问题可能更容易解决。数组的结构方法看起来有点像
program nml1
implicit none
type info(length)
integer, len :: length
character(20) name(length)
integer age(length)
character(20) country(length)
end type info
type(info(:)), allocatable :: class
namelist /my_data/ class
class = info(3)([character(20)::'a','b','c'],[12,13,14], &
[character(20)::'china','chile','india'])
write(*,nml=my_data)
end program nml1
或许
program nml2
implicit none
type info(length)
integer, len :: length
character(20) name(length)
integer age(length)
character(20) country(length)
end type info
type(info(:)), allocatable :: class
namelist /my_data/ class
allocate(info(3)::class)
class%name = [character(20)::'a','b','c']
class%age = [12,13,14]
class%country = [character(20)::'china','chile','india']
write(*,nml=my_data)
end program nml2
但我似乎无法用gfortran或ifort编译这两个函数。是我的错还是编译器的错误
但这不是一个大问题,因为我无论如何都会推荐结构数组方法。在这种情况下,我们将每个学生的所有相关数据打包到一个结构中,并创建一个这样的结构数组,而不是将3个标量数据数组打包到一个结构中(或者仅免费)。下面是它的样子:
program nml
implicit none
type info
character(20) name
integer age
character(20) country
end type info
type(info), allocatable :: class(:)
namelist /my_data/ class
class = [info('a',12,'china'),info('b',13,'chile'),info('c',14,'india')]
write(*,nml=my_data)
end program nml
现在,这种方法的好处在于,它不仅可以编译,而且数据会以正确的顺序自动返回,并通过“名称列表”I/O使用标签,这样,如果这种格式足够好,我们就不必编写任何花哨的输出代码。gfortran的输出为:
&MY_DATA
CLASS(1)%NAME="a ",
CLASS(1)%AGE=12 ,
CLASS(1)%COUNTRY="china ",
CLASS(2)%NAME="b ",
CLASS(2)%AGE=13 ,
CLASS(2)%COUNTRY="chile ",
CLASS(3)%NAME="c ",
CLASS(3)%AGE=14 ,
CLASS(3)%COUNTRY="india ",
/
欢迎来到堆栈溢出。请拿着这本书学习。然后,给我们一个清晰的描述,你想做什么,你错了什么,你期望得到什么,以及一个简单的答案。