全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:939
推到 Plurk!
推到 Facebook!

如何去記錄一維陣列的位置

尚未結案
IORIS
一般會員


發表:15
回覆:21
積分:7
註冊:2005-01-14

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-10-02 03:18:57 IP:211.76.xxx.xxx 未訂閱
假設我有一個陣列 a[20]={0,0,2,4,0,0,0,6,7,8,9,6,6,7,8,6,7,8,0,1} 判斷條件是當陣列內的值 大於5 且 連續超過n個點符合(假設n=10) 就記錄第一次大於5的位置---也就是6第一次出現的位置 (a[8]) 請問要如何用程式來寫? 請各位前輩指教
GGL
資深會員


發表:104
回覆:600
積分:335
註冊:2006-11-05

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-10-02 04:11:02 IP:61.70.xxx.xxx 未訂閱
我的想法是:先從a[0]開始讀,遇到第一個大於5的記錄他的位置(position),可以用for loop來寫,這樣就可以知道已經讀到哪一個位置。如果下一個仍然大於5就繼續讀下去,直到讀到n值為止;假如遇到小於5的值,就把position重設...直到再次遇到大於5的值....repeat...
IORIS
一般會員


發表:15
回覆:21
積分:7
註冊:2005-01-14

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-10-02 18:48:02 IP:211.76.xxx.xxx 未訂閱
多謝 GGL 的意見 我已經改寫出來了 程式碼如下
    int a[20]={0,0,2,4,0,0,0,6,7,8,9,6,6,7,8,6,7,8,0,1};
    int t=0;
    int new1,x,n;
    for ( x=0 ; x<20;x  )
    {
                if(  a[x] >5 )
                {
                        t=0;
                        new1=x;
                        for( n=x; n<=x 9; n  )
                        {
                                if(a[n]>5)
                                t  ;
                        }  
                        if(t>9 )
                                break;
                }
    }
new1 即是我所要的 位置 不知道有沒有少考慮到的地方?
windblown
中階會員


發表:0
回覆:117
積分:98
註冊:2003-11-14

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-10-04 16:45:39 IP:61.229.xxx.xxx 未訂閱
當你有 20 個資料,要連續符合 10 個,那你會去找第 11 個嗎?    答案是: 不會,因為就算後面 9 個都符合,也永遠不會到達 10 個,所以    for ( x=0 ; x<20-10;x ) // 可以加快你的計算
IORIS
一般會員


發表:15
回覆:21
積分:7
註冊:2005-01-14

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-10-04 18:11:12 IP:140.135.xxx.xxx 未訂閱
windblown 你好: 多謝你的提醒.我會注意的.
系統時間:2024-06-29 16:25:27
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!