[問題]環狀array的問題 |
尚未結案
|
plihui
初階會員 ![]() ![]() 發表:88 回覆:96 積分:41 註冊:2003-07-03 發送簡訊給我 |
int th_his1[64],th_his2[64]; int diff=0,diff1=0,diff2=0; //假設th_his1[],th_his2[]早已設定好 //問題段 //假設th_his2為th_his1平移值之後或是反轉之後的陣列 //ex: th_his1[]={1,2,3} //則 th_his2[]={2.3.1}或是{3,2,1} //求th_his2為th_his1平移幾個位置或反轉平移幾個位置 for(int shift=0;shift<64;shift ) { diff=0,diff1=0,diff2=0; for(int index=0;index<64;index ) { diff1 =fabs(th_his1[index]-th_his2[(index shift)c]); ^^^ //請問是取63還是64的餘數ㄚ? diff2 =fabs(th_his1[index]-th_his2[63-(index shift)c]); ^^^^^^^^^^^^^^^^^^^ //從63或64開始? } diff=(diff1問題: 假設th_his2為th_his1平移值之後或是反轉之後的陣列 ex: th_his1[]={1,2,3} 則 th_his2[]={2.3.1}或是{3,2,1} 求th_his2為th_his1平移幾個位置或反轉平移幾個位置 使得th_his2-th_his1絕對值最小 我是利用Array去實做(假設陣列大小64) 想請問大大: Q1:請問是取63還是64的餘數ㄚ? Q2:如果從尾端開始算,若th_his2[]為th_his1[]反向,那就上面程式碼 ^^^^^^部分,到底該取63還是64阿? |
richtop
資深會員 ![]() ![]() ![]() ![]() ![]() 發表:122 回覆:646 積分:468 註冊:2003-06-10 發送簡訊給我 |
plihui 您好:
diff1 =fabs(th_his1[index]-th_his2[(index shift)c]); ^^^如果您的意思是希望取值的順序為:0,1,2,...,62,63,0,1,2....的話,那就要用64。 至於您的反轉我並不確定它的意思。 底下有個next(.)函式應該對您有幫助, 主要在產生循環的數列,由大到小或由小到大均可。 //--------------------------------------------------------------------------- int next(int value, int len, int skip=1) // including both direction { value = skip; if ( skip<0 ) value = len; if ( value>=len) value -= len; return (value); } void __fastcall TForm1::Button1Click(TObject *Sender) { AnsiString msg=""; int index = 2; for (int k=0; k<10; k ) { index = next(index, 7); msg = IntToStr(index) "\n"; } ShowMessage(msg); index = 2; msg = ""; for (int k=0; k<10; k ) { index = next(index, 7, -1); msg = IntToStr(index) "\n"; } ShowMessage(msg); } //---------------------------------------------------------------------------RichTop 敬上 =====***** 把數學當工具,可以解決問題;將數學變能力,能夠發現並解決問題! =====##### |
plihui
初階會員 ![]() ![]() 發表:88 回覆:96 積分:41 註冊:2003-07-03 發送簡訊給我 |
引言: plihui 您好:謝R大: 反轉的意思: 用舉例來說 : ex1 a[5]={0,1,2,3,4}; ra[5]={4,3,2,1,0};//當作是反轉矩陣吧? ->把ra從array後端來看{0,1,2,3,4}就是a的反轉(而且沒有平移) ex2: ra2[5]={0,4,3,2,1} ->ra2為a反轉且右移1位{1,2,3,4,0} 還是用舉例的好...... 希望R大幫忙解1下....diff1 =fabs(th_his1[index]-th_his2[(index shift)c]); ^^^如果您的意思是希望取值的順序為:0,1,2,...,62,63,0,1,2....的話,那就要用64。 |
richtop
資深會員 ![]() ![]() ![]() ![]() ![]() 發表:122 回覆:646 積分:468 註冊:2003-06-10 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |