Arrays 在1D数组中写入输入名称
我正在尝试编写一个简短的F77程序,它要求用户输入datapoint的名称及其10个值。数据点的绝对数量(名称+10个值)应该是可变的 因为Fortran不接受混合数组,所以我尝试编写一个名为的1D数组和值为的2D数组。然而,1D阵列似乎不起作用,我不知道我做错了什么Arrays 在1D数组中写入输入名称,arrays,fortran,character,fortran77,Arrays,Fortran,Character,Fortran77,我正在尝试编写一个简短的F77程序,它要求用户输入datapoint的名称及其10个值。数据点的绝对数量(名称+10个值)应该是可变的 因为Fortran不接受混合数组,所以我尝试编写一个名为的1D数组和值为的2D数组。然而,1D阵列似乎不起作用,我不知道我做错了什么 implicit none real x, integer ndatapoints, i,j character names(1,100)*10 dimension x(10,10) do
implicit none
real x,
integer ndatapoints, i,j
character names(1,100)*10
dimension x(10,10)
do i= 1, ndatapoints
read(5,*) (names(i), i=1, ndatapoints),(x(i,j),j=1, 10)
end do
do i=1,ndatapoints
write(6,*)(x(i,j),j=1,10)
write(6,*)(names(i),i,ndatapoints)
end do
字符名(1100)*10
是一个1x100形状的二维数组,其元素字符串长度为10
一维阵列将是
字符*10个名称(100)
你的问题不够清楚,无法说明这是否是你想要的
还有一些值是未定义的,如ndapapoints
这显然也是错误的:
do i= 1, ndatapoints
read(5,*) (names(i), i=1, ndatapoints)
也许应该是
do i= 1, ndatapoints
read(5,*) names(i)
您的边界1
、10
和100
从何而来还不清楚。其中一些可能是ndapoints
,但很难说是哪一个
胡乱猜测:
integer ndatapoints
parameter (ndatapoints=100)
character names(ndatapoints)*10
real x(ndatapoints,10)
字符名(1100)*10
是一个1x100形状的二维数组,其元素字符串长度为10
一维阵列将是
字符*10个名称(100)
你的问题不够清楚,无法说明这是否是你想要的
还有一些值是未定义的,如ndapapoints
这显然也是错误的:
do i= 1, ndatapoints
read(5,*) (names(i), i=1, ndatapoints)
也许应该是
do i= 1, ndatapoints
read(5,*) names(i)
您的边界1
、10
和100
从何而来还不清楚。其中一些可能是ndapoints
,但很难说是哪一个
胡乱猜测:
integer ndatapoints
parameter (ndatapoints=100)
character names(ndatapoints)*10
real x(ndatapoints,10)
我有点老了,这似乎对我很有用:
CHARACTER(LEN=100), DIMENSION(10) :: names
REAL , dimension(10,10) :: X
do i= 1, ndatapoints
read(5,*) names(i), x(i,:)
end do
我不确定数据点应该是什么,但大体上是沿着所示的路线。我可能会使用字符(LEN=128),因为
我90%确定您真的希望这样交换I(行/列):
我有点老了,这似乎对我很有用:
CHARACTER(LEN=100), DIMENSION(10) :: names
REAL , dimension(10,10) :: X
do i= 1, ndatapoints
read(5,*) names(i), x(i,:)
end do
我不确定数据点应该是什么,但大体上是沿着所示的路线。我可能会使用字符(LEN=128),因为
我90%确定您真的希望这样交换I(行/列):
欢迎不要在你的帖子里放任何问候语。如果没有必要,不要在标题中添加标签。使用常规标记,必要时添加版本标记。您应该写出代码的问题所在。有错误信息吗?哪一个?错误的结果?它们看起来怎么样?从来没用过,没用,没用,没用。这个短语不属于任何好问题。
names
不是声明为秩-1数组,而是声明为秩-2数组。但是你把它称为排名1。那么,您会得到什么错误呢?查看f90的派生数据类型。它本质上就是您想要的,一个混合类型数组。不知道为什么你想把自己限制在f77和固定格式的源代码上,除非你喜欢让生活更艰难。在开始键入和编写f90代码之前,请避免使用空格键。欢迎使用。不要在你的帖子里放任何问候语。如果没有必要,不要在标题中添加标签。使用常规标记,必要时添加版本标记。您应该写出代码的问题所在。有错误信息吗?哪一个?错误的结果?它们看起来怎么样?从来没用过,没用,没用,没用。这个短语不属于任何好问题。names
不是声明为秩-1数组,而是声明为秩-2数组。但是你把它称为排名1。那么,您会得到什么错误呢?查看f90的派生数据类型。它本质上就是您想要的,一个混合类型数组。不知道为什么你想把自己限制在f77和固定格式的源代码上,除非你喜欢让生活更艰难。在开始键入和编写f90代码之前,请避免使用空格键。值得注意的是,这是Fortran 90,而不是77。但是看起来是正确的,除了10应该是数据点
之外。是的@Vladimir你是对的,它更像是F90风格。值得注意的是,这是Fortran 90,而不是77。但是看起来是正确的,除了10应该是nDapoints
之外。是的@Vladimir你是对的,它更像是F90风格。