主题:[讨论]关于定义一个100*100*100的三维数组的问题
我就是个小白
[专家分:30] 发布于 2012-05-23 11:04:00
real::x(:),y(:),z(:)
call random_seed()
do i=1,100
call random_number(x(i))
call random_number(y(i))
call random_number(z(i))
enddo
这是我定义的一个空间三维数组,要求空间中的每个点都是随机的,但是出现以下错误:
error 1055 - Z is not a dummy argument, or a POINTER or ALLOCATABLE array, so cannot be assumed-shape
error 1055 - Y is not a dummy argument, or a POINTER or ALLOCATABLE array, so cannot be assumed-shape
error 1055 - X is not a dummy argument, or a POINTER or ALLOCATABLE array, so cannot be assumed-shape
回复列表 (共11个回复)
11 楼
臭石头雪球 [专家分:23030] 发布于 2012-05-24 07:46:00
[quote]不对啊,比如x(1,1,1)=12,x(1,1,2)=14,他们之间的距离怎么算?x(i,j,k)不是代表三维坐标,只是代表三维空间中的某点
那看来用上述方法来随机生成一组三维坐标不行了啊,这个只能生成三维随机数组,但是怎么用fortran生成三维坐标啊?[/quote]
你说的这些话什么意思??看不明白。
难道不是用三维坐标去表达这些点么?我想不出这个问题有何难处?
我想下面的代码或许是你想要的。
[quote]
[font=宋体][color=#FF0000]Program [/color][color=#000000]Main
[/color][color=#FF0000]Implicit None
Type [/color][color=#000000]ST_Point
[/color][color=#FF0000]real [/color][color=#000000]x [/color][color=#000080], [/color][color=#000000]y [/color][color=#000080], [/color][color=#000000]z
[/color][color=#FF0000]End Type [/color][color=#000000]ST_Point
[/color][color=#FF0000]Type[/color][color=#000080]( [/color][color=#000000]ST_Point [/color][color=#000080]) :: [/color][color=#000000]stP1 [/color][color=#000080], [/color][color=#000000]stP2
[/color][color=#FF0000]Read[/color][color=#000080]( * , * ) [/color][color=#000000]stP1 [/color][color=#000080], [/color][color=#000000]stP2
[/color][color=#FF0000]Write[/color][color=#000080]( * , * ) [/color][color=#000000]DistanceOfTwoPoints[/color][color=#000080]( [/color][color=#000000]stP1 [/color][color=#000080], [/color][color=#000000]stP2 [/color][color=#000080])
[/color][color=#FF0000]Contains
Real Function [/color][color=#000000]DistanceOfTwoPoints[/color][color=#000080]( [/color][color=#000000]stP1 [/color][color=#000080], [/color][color=#000000]stP2 [/color][color=#000080]) [/color][color=#FF0000]result[/color][color=#000080]([/color][color=#000000]D[/color][color=#000080])
[/color][color=#FF0000]Type[/color][color=#000080]( [/color][color=#000000]ST_Point [/color][color=#000080]) , [/color][color=#FF0000]Intent[/color][color=#000080]( [/color][color=#FF0000]IN [/color][color=#000080]) :: [/color][color=#000000]stP1 [/color][color=#000080], [/color][color=#000000]stP2
D [/color][color=#000080]= [/color][color=#FF0080]SQRT[/color][color=#000080]( ([/color][color=#000000]stP1[/color][color=#000080]%[/color][color=#000000]x[/color][color=#000080]-[/color][color=#000000]stP2[/color][color=#000080]%[/color][color=#000000]x[/color][color=#000080])**[/color][color=#800080]2 [/color][color=#000080]+ ([/color][color=#000000]stP1[/color][color=#000080]%[/color][color=#000000]y[/color][color=#000080]-[/color][color=#000000]stP2[/color][color=#000080]%[/color][color=#000000]y[/color][color=#000080])**[/color][color=#800080]2 [/color][color=#000080]+ ([/color][color=#000000]stP1[/color][color=#000080]%[/color][color=#000000]z[/color][color=#000080]-[/color][color=#000000]stP2[/color][color=#000080]%[/color][color=#000000]z[/color][color=#000080])**[/color][color=#800080]2 [/color][color=#000080])
[/color][color=#FF0000]End Function [/color][color=#000000]DistanceOfTwoPoints
[/color][color=#FF0000]End Program [/color][color=#000000]Main[/color][/font][/quote]
我来回复