Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 在1D数组中写入输入名称_Arrays_Fortran_Character_Fortran77 - Fatal编程技术网

Arrays 在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

我正在尝试编写一个简短的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 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风格。