我制作了一个带有随机值的10x10数组。 使用fortran 90。
编辑:我找到了解决问题的方法,当它处于更加流畅的状态时,我会添加它。
real :: x
integer, dimension(10,10) :: matrix
integer d,f,j,sum
do d=1,10
do f=1,10
call RANDOM_NUMBER(x)
j = FLOOR(10*x)
matrix(d,f) = j
sum= sum + j
write(*,*)'RND number', matrix(d,f)
end do
end do
write(*,*)'Sum of all elements in the array: ', sum
现在,我要做的是 - 创建2个名为array1和array2的新数组,它们都是5x10,包含1-5和初始数组的6-10。
我遇到的这个问题是更大的任务中的一步,它涉及将新阵列发送到从属节点(使用MPI),对它们进行一些工作,并将结果发送回主节点。但这超出了这个问题的范围。
答案 0 :(得分:1)
下次发布您所做的事情......
integer, dimension(10,10) :: matrix
integer, dimension(10, 5) :: trunk
integer, dimension(10, 5) :: tail
...
trunk = matrix(:, 1: 5)
tail = matrix(:, 6:10)
或者......也许EQUIVALENCE可以工作,你必须尝试,因为我可能有错...
EQUIVALENCE (Matrix,Trunk), (Tail,Matrix(6,1))
SUM绝对是PURE或PURE ELEMENTAL内在的
我不确定RANDOM_NUMBER ...
但这可能更时尚,因为你可以省略循环:
Matrix = RANDOM_NUMBER(x)
WHERE (Matrix <= <somefloor>)...
mySum = SUM(Matrix)