數(shù)組
作者:金字塔 來源:cxh99.com 發(fā)布時間:2015年03月13日
- 咨詢內(nèi)容:
HH:=H;LL:=L;
FOR I=2 TO DATACOUNT DO BEGINN1:=HH[I]>HH[I-1] AND LL[I]>LL[I-1];N2:=HH[I]<HH[I-1] AND LL[I]<LL[I-1];N3:=(HH[I]>=HH[I-1] AND LL[I]<=LL[I-1]) OR (HH[I]<=HH[I-1] AND LL[I]>=LL[I-1]);IF N1 THEN BEGIN A[I]:=1;AA[I]:=1;END;IF N2 THEN BEGIN A[I]:=2;AA[I]:=2;END;IF N3 THEN BEGIN A[I]:=3;AA[I]:=AA[I-1];END;
IF N3 THEN BEGIN IF AA[I-1]=1 THEN BEGIN HH[I]:=MAX(HH[I],HH[I-1]);LL[I]:=MAX(LL[I],LL[I-1]);END;IF AA[I-1]=2 THEN BEGINHH[I]:=MIN(HH[I],HH[I-1]);LL[I]:=MIN(LL[I],LL[I-1]);END;END;IF A[I+1]=3 THEN BEGIN G[I]:=10;GG[I]:=10;END;END;老師好,最后一個問題,AA[I-1]是否有錯?副圖顯示數(shù)組越界操作,我的取值是I=2 TO DATACOUNT ,為什么AA[I-1]就越界了呢?求詳細(xì)解答
- 金字塔客服:
A[]這個數(shù)組,I的取值范圍是2到DATACOUNT, 當(dāng)實際數(shù)組里I的值不在這個范圍內(nèi)就會越過數(shù)組下標(biāo)或上標(biāo)。這里建議您加個控制條件,例如
HH:=H;
LL:=L;
FOR I=2 TO DATACOUNT DO BEGIN
IF I>=3 AND I<=DATACOUNT-1 THEN
BEGIN
N1:=HH[I]>HH[I-1] AND LL[I]>LL[I-1];
N2:=HH[I]<HH[I-1] AND LL[I]<LL[I-1];
N3:=(HH[I]>=HH[I-1] AND LL[I]<=LL[I-1]) OR (HH[I]<=HH[I-1] AND LL[I]>=LL[I-1]);
IF N1 THEN BEGIN A[I]:=1;AA[I]:=1;END;
IF N2 THEN BEGIN A[I]:=2;AA[I]:=2;END;
IF N3 THEN BEGIN A[I]:=3;AA[I]:=AA[I-1];END;
IF N3 THEN BEGIN
IF AA[I-1]=1 THEN BEGIN
HH[I]:=MAX(HH[I],HH[I-1]);
LL[I]:=MAX(LL[I],LL[I-1]);
END;
IF AA[I-1]=2 THEN BEGIN
HH[I]:=MIN(HH[I],HH[I-1]);
LL[I]:=MIN(LL[I],LL[I-1]);
END;
END;
IF A[I+1]=3 THEN BEGIN G[I]:=10;GG[I]:=10;END;
END;
END;
- 用戶回復(fù):
我已經(jīng)理解了 IF I>=3 AND I<=DATACOUNT-1 THEN 這句,邏輯上完全可以,但是為什么我剛剛加載了下,還是顯示數(shù)組跨界呢,仍然是AA[I-1]這個地方跨界,真郁悶了,請老師也加載看看
- 網(wǎng)友回復(fù):
恩,這個隨K線長度變化導(dǎo)致的
我覺得可以對A[1]和A[DATACOUNT]你自行定義一個值,這樣就不會有此情況
- 網(wǎng)友回復(fù):
好的。AA[I-1]自定義一個常數(shù),是可以,變成常數(shù)時就不會有數(shù)組越界這個問題了,但這樣無法表達(dá)我的原意。就這樣將就的用著吧,看是看得到,但有時會顯示數(shù)組越界。還望老師以后有機會慢慢琢磨這個問題,謝謝你。