请问版主 可否用变量在一个循环实现 请帮助改一下 谢谢
//1次循环
for i=barpos downto 4 do begin
if cross(aa,lj) then do begin
nt:=i-1;
//tmp1:=aa;
end;
if cross(hj,aa) then do begin
//tmp:=ref(aa,i-1);;
ntt:=i-1;
end
end;
cfb:=ref(aa,barpos-nt),linethick0;
cfb1:=ref(aa,barpos-ntt),linethick0;
gg:cfb-cfb1,linethick0;;
barpos1:=min(nt,ntt),linethick0;;;
//if barpos1>10 then goto tyu;
//2次循环
for ii=barpos1 downto 4 do begin
if cross(aa,lj) then do begin
nta:=ii-1;
//tmp1:=aa;
end;
if cross(hj,aa) then do begin
//tmp:=ref(aa,i-1);;
ntta:=ii-1;
end
end;
cfba:=ref(aa,barpos-nta+1),linethick0;
cfba1:=ref(aa,barpos-ntta-1),linethick0;
gga:cfba-cfba1,linethick0;;
//ggav:ntta,linethick0;;
//、、n次循环
。
。。
。。
。。
。。。。。
//求和
ggll:gg+gg+........................,linethick0;;
没看清你的代码思路,你可以将你要描述的目的,这里写一下,如果有代表性我们帮你做个DEMO
主要是计算n次循环的累计值gg 但是我只能分别写n次循环分别计算 这样效率太低 我想改成在一个循环里利用变量计算累计值gg
大体思路如下
s:=0; //此变量用于记每次循环后gg的总和
i:=barpos; //初设循环初始值
loop @ for i downto 4 do begin
if 条件1满足 then 计算nt...等值;
if 条件2满足 then 计算ntt...等值;
end
计算gg等值;
s:= s+gg;
i:= min(nt,ntt); //根据上次计算结果再设循环初始值
if i满足某条件 goto loop; //当I满足条件时,无条件跳转到loop语句
注:最后计算所得s就是gg的累计和值