數列運算求low的歷史最低點
感謝cgjj解惑,再請教一個問題,我參考【範例5】求指定年份的最低價
FindYear 為指定的年份
MinLow 為該年份的最低價
若為 -1 代表不存在該年份數據
FindYear:=2002;
UseY:=YEAR;
UseL:=LOW;
MinLow:=-1;
StartNo:= lbound(UseY);
EndNo:= ubound(UseY);
for i = StartNo to EndNo do begin
if UseY[i] = FindYear then begin
if UseL[i] < MinLow or MinLow = -1 then MinLow:= UseL[i];
end;
end;
最低:MinLow;
------------------------------------------------------------------------------------------------------
模仿程式希望找8068全達上市以來最低價3.85
minlow:=-1;
ll:=LOW;
startno:=LBOUND(ll);
endno:=UBOUND(ll);
for i= startno to endno do begin
IF ll[i]< minlow or minlow=-1 then minlow=ll[i];
end;
最低:minlow;
------------------------------------------------------------------------------------------------------
您問題在此
IF ll[i]< minlow or minlow=-1 then minlow=ll[i];
改為這樣即可
IF ll[i]< minlow or minlow=-1 then minlow:=ll[i];
迴圈中的敘述一定都要 := 的形式(不輸出)
不可於迴圈中指定任何形式的輸出
建議您將不同問題另開主題發問
------------------------------------------------------------------------------------------------------
感謝cgjj,改正後可以成功,再衍伸一個問題
minlow:=-1;
ll:=LOW;
startno:=LBOUND(ll);
endno:=UBOUND(ll);
for i= startno to endno do begin
IF ll[i]< minlow or minlow=-1 then minlow:=ll[i];
end;
最低:minlow;
======================================
如果改變
minlow:=-1;
ll:=LOW;
startno:=LBOUND(ll);
endno:=UBOUND(ll);
for i= startno to endno do begin
IF ll[i]< minlow then minlow:=ll[i]; <-----------只有minlow
end;
最低:minlow;
則出現數值為-1,不會顯示3.85
======================================
或是改變
minlow:=-1;
ll:=LOW;
startno:=LBOUND(ll);
endno:=UBOUND(ll);
for i= startno to endno do begin
IF ll[i]<= minlow then minlow:=ll[i]; <----------- ll[i]<=minlow
end;
最低:minlow;
一樣出現數值-1,不會顯示3.85
--------------------------------------------------------------------------------------------
我的疑問是,minlow=-1或是其他常數不影響運算結果,但為何 if ll[i]< minlow or minlow=-1 這語句對輸出結果影響如此關鍵呢?
__________________
i am a person
|