fortran二维可变大小数组赋初值
二维数组赋值查到有两种简单的赋值办法一种用了data,另一种直接a(2,2)=(/1,2,3,4/)用allocate设置了可变大小数组以后,想给a(n,n)这个二维数组...
二维数组赋值查到有两种简单的赋值办法
一种用了data,另一种直接a(2,2)=(/1,2,3,4/)
用allocate设置了可变大小数组以后,想给a(n,n)这个二维数组赋初值(n=3,已经设成了常数)
查了下说是可变大小数组没法用data赋值(程序先执行data,遇到动态数组没法赋值)
用了第二种a(n,n)=(/1,2,3,4,5,6,7,8,9/)总有一个错误
Error: The shapes of the array expressions do not conform.
不知道是为什么?求教……orz
不会allocate(a(n,n))这个本身就是错的吧?
P.S上网查有人说是文件或路径是中文,这个绝对没有;有人说可能用户定义变量与系统变量重复造成冲突,这个不懂;有人说数组运算的时候,前后数组的形状不一致,不太明白是怎么回事,但是不用可变大小数组时候,直接a(3,3)=...程序可以运行没有错误,我觉得不是这个的原因…… 展开
一种用了data,另一种直接a(2,2)=(/1,2,3,4/)
用allocate设置了可变大小数组以后,想给a(n,n)这个二维数组赋初值(n=3,已经设成了常数)
查了下说是可变大小数组没法用data赋值(程序先执行data,遇到动态数组没法赋值)
用了第二种a(n,n)=(/1,2,3,4,5,6,7,8,9/)总有一个错误
Error: The shapes of the array expressions do not conform.
不知道是为什么?求教……orz
不会allocate(a(n,n))这个本身就是错的吧?
P.S上网查有人说是文件或路径是中文,这个绝对没有;有人说可能用户定义变量与系统变量重复造成冲突,这个不懂;有人说数组运算的时候,前后数组的形状不一致,不太明白是怎么回事,但是不用可变大小数组时候,直接a(3,3)=...程序可以运行没有错误,我觉得不是这个的原因…… 展开
展开全部
第一,data 是定义语句,而不是执行语句。
第二,allocate(a(n,n)) 没有问题。
第三,网上这些问题你很难搜索到,因为不好描述。别人说的很可能与你遇到的不是同一个问题。你需要有针对性的提问。
以下是解答。
Program Baidu_Thlws
Implicit None
real :: b( 3, 3 ) = (/(/1,2,1/),(/3,2,3/),(/2,3,4/)/) !//直接定义时,可以使用这样的二维数组形式。
Real , allocatable :: a( : , : )
Allocate( a( 3, 3 ) )
a = reshape( (/1,2,3,4,5,6,7,8,9/) , (/3,3/) ) !// 可变数组可使用 reshape 把一维数组形式转变为二维数组形式
write(*,*) a
write(*,*) b
End Program Baidu_Thlws
reshape 函数用于把一个数组改变外形,变为另一个数组。
例如上例:
a = reshape( (/1,2,3,4,5,6,7,8,9/) , (/3,3/) )
把
(/1,2,3,4,5,6,7,8,9/)
这个 1*9 的一维数组,转换为
(/3,3/) 的数组,即 3*3 的数组。
第二,allocate(a(n,n)) 没有问题。
第三,网上这些问题你很难搜索到,因为不好描述。别人说的很可能与你遇到的不是同一个问题。你需要有针对性的提问。
以下是解答。
Program Baidu_Thlws
Implicit None
real :: b( 3, 3 ) = (/(/1,2,1/),(/3,2,3/),(/2,3,4/)/) !//直接定义时,可以使用这样的二维数组形式。
Real , allocatable :: a( : , : )
Allocate( a( 3, 3 ) )
a = reshape( (/1,2,3,4,5,6,7,8,9/) , (/3,3/) ) !// 可变数组可使用 reshape 把一维数组形式转变为二维数组形式
write(*,*) a
write(*,*) b
End Program Baidu_Thlws
reshape 函数用于把一个数组改变外形,变为另一个数组。
例如上例:
a = reshape( (/1,2,3,4,5,6,7,8,9/) , (/3,3/) )
把
(/1,2,3,4,5,6,7,8,9/)
这个 1*9 的一维数组,转换为
(/3,3/) 的数组,即 3*3 的数组。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询