![]() |
在這個頁面顯示本主題全部的 15 個文章 |
奇狐社區論壇 (http://www.chiefox.com.tw/bbs/index.php)
- 問題交流 (http://www.chiefox.com.tw/bbs/forumdisplay.php?forumid=28)
-- [問題]在一數列中尋找符合條件的第一個元素? (http://www.chiefox.com.tw/bbs/showthread.php?threadid=17520)
[問題]在一數列中尋找符合條件的第一個元素?
總版主您好,
我有一個數列AA,跟K棒數等長,在程式前頭已根據K棒的性質設定其元素值,為0~4,然後我利用for迴圈,由後往前(datacount to 2),依據元素值來決定要執行一些動作,這些動作中有必須往前尋找符合條件的最近的其他元素位置,並取得其為哪一個元素值及其位置數,例如:當為1時,我要往前找最近的2或3,當為2時,我要往前找最近的1或4,當為3時,我要往前找最近的2或3,當為4時,我要往前找最近的1或4,若找不到符合的條件,則跳過不做任何動作,這樣的需求不知要用哪一個或哪幾個指令才能完成?是不是要用引用函數?謝謝總版主的協助。
回覆: [問題]在一數列中尋找符合條件的第一個元素?
引用:
最初由 novaliou0206 發表
總版主您好,
我有一個數列AA,跟K棒數等長,在程式前頭已根據K棒的性質設定其元素值,為0~4,然後我利用for迴圈,由後往前(datacount to 2),依據元素值來決定要執行一些動作,這些動作中有必須往前尋找符合條件的最近的其他元素位置,並取得其為哪一個元素值及其位置數,例如:當為1時,我要往前找最近的2或3,當為2時,我要往前找最近的1或4,當為3時,我要往前找最近的2或3,當為4時,我要往前找最近的1或4,若找不到符合的條件,則跳過不做任何動作,這樣的需求不知要用哪一個或哪幾個指令才能完成?是不是要用引用函數?謝謝總版主的協助。
謝謝您,方法一中的barslast引用函數可以用在迴圈中嗎?它會不會從我迴圈當時的位置往前找?如果可以,那參數要如何放?畢竟我數列中有很多的1,2,3,4,之所以用迴圈,是要找每一個往前相關的元素,謝謝。
另外方法二中用第二迴圈方式,當我找到最近符合的條件,如何就跳出迴圈不要再找下去了?謝謝。
引用:
最初由 novaliou0206 發表
謝謝您,方法一中的barslast引用函數可以用在迴圈中嗎?它會不會從我迴圈當時的位置往前找?如果可以,那參數要如何放?畢竟我數列中有很多的1,2,3,4,之所以用迴圈,是要找每一個往前相關的元素,謝謝。
謝謝您,我一直忘了SP23也是數列,另一問題,在迴圈中符合條件直接跳出迴圈,是不是用EXIT指令?要如何用?謝謝。
引用:
最初由 novaliou0206 發表
謝謝您,我一直忘了SP23也是數列,另一問題,在迴圈中符合條件直接跳出迴圈,是不是用EXIT指令?要如何用?謝謝。
謝謝您,所以在迴圈內的條件判斷上,當符合執行完我要做的動作後,最後加上break,迴圈就會中斷跳出,我這樣說對嗎?謝謝。
引用:
最初由 novaliou0206 發表
謝謝您,所以在迴圈內的條件判斷上,當符合執行完我要做的動作後,最後加上break,迴圈就會中斷跳出,我這樣說對嗎?謝謝。
謝謝您。
謝謝總版主最近的指導,我整合幾個問題的回答,寫出以下的測試程式:
SP23:=barslast(AA=2 or AA=3);
for i=datacount downto 2 do begin
if AA[i]=1 then begin
P2:=barpos=i;
P1:=SP23[i];
drawline(P1,L,P2,H,0), pxdn2,linethick2,coloryellow;
end;
end;
我也試著用雙重迴圈方式:
for i=datacount downto 2 do begin
if AA[i]=1 then begin
P2:=barpos=i;
for j=i-1 downto 1 do begin
if AA[j]=2or AA[j]=3 then begin
P1:=barpos=j;
break;
end;
end;
drawline(P1,L,P2,H,0), pxdn2,linethick2,coloryellow;
end;
end;
我確認過AA數列中元素值為1,2,3,4有很多個,因此我期待程式應該畫出很多條線,但不管採用哪一種方式,最後都只畫出最後一條線,不知是我哪裡搞錯了?應該要怎麼修改,才能把所有符合條件的線全部畫出來?謝謝您的協助。
引用:
最初由 novaliou0206 發表
謝謝總版主最近的指導,我整合幾個問題的回答,寫出以下的測試程式:
SP23:=barslast(AA=2 or AA=3);
for i=datacount downto 2 do begin
if AA[i]=1 then begin
P2:=barpos=i;
P1:=SP23[i];
drawline(P1,L,P2,H,0), pxdn2,linethick2,coloryellow;
end;
end;
我也試著用雙重迴圈方式:
for i=datacount downto 2 do begin
if AA[i]=1 then begin
P2:=barpos=i;
for j=i-1 downto 1 do begin
if AA[j]=2or AA[j]=3 then begin
P1:=barpos=j;
break;
end;
end;
drawline(P1,L,P2,H,0), pxdn2,linethick2,coloryellow;
end;
end;
我確認過AA數列中元素值為1,2,3,4有很多個,因此我期待程式應該畫出很多條線,但不管採用哪一種方式,最後都只畫出最後一條線,不知是我哪裡搞錯了?應該要怎麼修改,才能把所有符合條件的線全部畫出來?謝謝您的協助。
真厲害,可以了,謝謝總版主,但卻遇到一個小問題,我的部分程式如下:
P1:=AA=1;
P2:=AA=2;
P3:=AA=3;
P4:=AA=4;
P23:=AA=2 or AA=3;
P14:=AA=1 or AA=4;
drawline(P23,L,P1,H,0) pxdn2 linethick1 coloryellow;
drawline(P14,H,P2,L,0) pxdn2 linethick1 coloryellow;
drawline(P23,L,P3,H,0) pxdn2 linethick1 coloryellow;
drawline(P14,H,P4,L,0) pxdn2 linethick1 coloryellow;
stickline(P3,H,L,0.5,0) pxdn2 linethick1 coloryellow;
stickline(P4,L,H,0.5,0) pxdn2 linethick1 coloryellow;
連線幾乎都可以正常畫出,唯獨當AA=3或AA=4連續出現時,線就沒畫出來,在drawline(P23,L,P3,H,0) pxdn2 linethick1 coloryellow;,前面接AA=2就正常,但AA=3不畫,在drawline(P14,H,P4,L,0) pxdn2 linethick1 coloryellow;,前面接AA=1就正常,但AA=4不畫,要麻煩您協助解決了,謝謝。
引用:
最初由 novaliou0206 發表
真厲害,可以了,謝謝總版主,但卻遇到一個小問題,我的部分程式如下:
P1:=AA=1;
P2:=AA=2;
P3:=AA=3;
P4:=AA=4;
P23:=AA=2 or AA=3;
P14:=AA=1 or AA=4;
drawline(P23,L,P1,H,0) pxdn2 linethick1 coloryellow;
drawline(P14,H,P2,L,0) pxdn2 linethick1 coloryellow;
drawline(P23,L,P3,H,0) pxdn2 linethick1 coloryellow;
drawline(P14,H,P4,L,0) pxdn2 linethick1 coloryellow;
stickline(P3,H,L,0.5,0) pxdn2 linethick1 coloryellow;
stickline(P4,L,H,0.5,0) pxdn2 linethick1 coloryellow;
連線幾乎都可以正常畫出,唯獨當AA=3或AA=4連續出現時,線就沒畫出來,在drawline(P23,L,P3,H,0) pxdn2 linethick1 coloryellow;,前面接AA=2就正常,但AA=3不畫,在drawline(P14,H,P4,L,0) pxdn2 linethick1 coloryellow;,前面接AA=1就正常,但AA=4不畫,要麻煩您協助解決了,謝謝。
可以了,謝謝您,您幫了很大的忙。
全部時間均為台灣時間, 現在時間為14:50 | 在這個頁面顯示本主題全部的 15 個文章 |
Powered by: vBulletin Version 2.3.0 - Copyright©2000-, Jelsoft Enterprises Limited.
簡愛洋行 製作 Copyright 2003-. All Rights Reserved.