for 迴圈配合陣列相關問題

  •   287 
  • 最後發表   richardchien6  2023 八月 24
richardchien6 發文於   2023/08/21

小弟最近使用到陣列功能加上迴圈功能時碰到一些問題
正常程式碼如下

資料讀取比數:10

//=======參數區

array: numArray1[5](0);

var:i(0),j(5),SB(0),LB(0),sum(0),sum2(0),averageS(0),averageS2(0);

 

//====運算區

for i = 0 to 4

begin

numArray1[i]  = close[i];

sum = sum + numArray1[i];

end;

averageS = sum / 5;

 

ret = 1;

//====測試區

print("==========up====");

print(averageS);

print(numArray1[0]);

print(numArray1[1]);

print("==========down=====");

 

當迴圈寫從0到4時是正常的,print也可以正常print出數據來

但將程式碼改成i = 5 to 19 時就會出問題,甚麼都print不出來
(有將陣列大小改成15)

改過程式碼:

array: numArray1[15](0);

var:i(0),j(5),SB(0),LB(0),sum(0),sum2(0),averageS(0),averageS2(0);

//====運算區

for i = 5 to 19

begin

numArray1[i]  = close[i];

sum = sum + numArray1[i];

end;

averageS = sum / 5;

ret = 1;

//====測試區

print("==========up====");

print(averageS);

print(numArray1[0]);

print(numArray1[1]);

print("==========down=====");

 

更神奇的是,如果將程式碼的陣列大小改更大,且抓多一點資料時又可以正常運作,並可以print出數據

array: numArray1[20](0);

var:i(0),j(5),SB(0),LB(0),sum(0),sum2(0),averageS(0),averageS2(0);

 

//====運算區

for i = 5 to 19

begin

numArray1[i]  = close[i];

sum = sum + numArray1[i];

end;

averageS = sum / 5;

 

ret = 1;

//====測試區

print("==========up====");

print(averageS);

print(numArray1[0]);

print(numArray1[1]);

print(numArray1[2]);

print(numArray1[3]);

print(numArray1[4]);

print(numArray1[5]);

print(numArray1[6]);

print(numArray1[7]);

 

print("==========down=====");

有附上程式檔案

請問為甚麼會發生這種現象,請求小幫手或大神開示

附加文件

排序方式: 標準 | 最新
XQ小幫手 發文於   2023/08/24

Hello richardchien6,

 

您可以先閱覽 Array 的說明。

 

array: numArray1[15](0);

這樣會宣告一個array,有15個位置 (包含0)。

 

for i = 5 to 19 begin

numArray1[i]  = close[i];

sum = sum + numArray1[i];

end;

您在這邊取用到超出陣列範圍的資料。

numArray1[i] 的 i 只能是 0 ~ 15。

 

所以當您將 array 宣告的更大時就可以正常執行,因為 array: numArray1[20](0); 中 numArray1[i] 的 i 可以是 0 ~ 20。

 

另外要計算陣列加總的話原本就有 Array_Sum 函數。

richardchien6 發文於   2023/08/24

了解,謝謝小幫手,是我粗心了

發表回覆
Close