【发布时间】:2015-09-22 20:53:28
【问题描述】:
如何用隐含的 do 循环做同样的事情? 我想用两个隐含的 do 循环替换 Vcvo 和 Vcvonew 的现有循环?
这是我的代码:
Program DO_LOOPS
Implicit none
Integer::i,j
Integer,parameter::BrCv=15,BrSat=24
Real,dimension(0:BrCv-1,BrSat)::Vcvo
Real,dimension(BrCv-1,BrSat)::Vcvonew
Do i=0,BrCv-1
do j=1,BrSat
Vcvo(i,j)=i+j*BrCv/BrSat
end do
End do
Do i=1,BrCv-1
do j=1,BrSat
Vcvonew(i,j)=Vcvo(i,j)
end do
End do
Stop
End program DO_LOOPS
【问题讨论】:
-
你想让
i+j*BrCv/BrSat是一个整数表达式吗? -
回应@Ross 的评论,你真正关心的是什么?可以很容易地在
vcvo的数组构造函数中使用隐含执行(这很简单,我不确定我是否理解这个问题),但除了使五行不那么直观之外,我不知道为什么隐含的行为是您所关心的。 -
我需要一个关于 Vcvonew 的建议。如何用双隐含的 do 循环替换我的 do 循环解决方案,例如我尝试使用此解决方案但不正确:((Vcvonew(i,j), j=1,BrSat),i=1,BrCv-1)
-
为什么你需要一个隐含的do解决方案而不是你拥有的do结构甚至
vcvonew=vcvo(1:,:)?对我来说,第一种类型的答案是否真的会是你认为的那样,这并不明显。 -
FORALL 在这里可能更明智。
标签: loops fortran gfortran do-loops