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

如何抓取二維陣列裡的值.............

尚未結案
skkyo
一般會員


發表:4
回覆:1
積分:1
註冊:2004-11-01

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-09-26 15:27:50 IP:163.28.xxx.xxx 未訂閱
假設ㄧ個二微陣列a[3][3]={{3,3,2},{2,1,3},{1,0,3}} 3是出現最多次的,所以令這個整個陣列裡的每個值為3 請問各位大大,關於這個想法的程式怎麼寫?
i_am_jcl
一般會員


發表:3
回覆:9
積分:2
註冊:2002-04-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-09-26 16:12:19 IP:220.130.xxx.xxx 未訂閱
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    int a[3][3]={{3,2,2},{2,1,3},{1,2,3}} ;
    int i , j ;
    int *value ;
    int count ,max_value = 0, max_count = 0 ;        for(i=0;i< (sizeof(a)/sizeof(a[0][0])) ; i  )
    {
        value =  ((int *)&a i) ;
        count = 0 ;
        for(j=0;j< (sizeof(a)/sizeof(a[0][0])) ; j  )
        {
           if( *value  ==   *((int *)&a j))
                  count ;
        }
        if(count > max_count)
        {
            max_value = *value ;
            max_count = count ;
        }
    }
    for(i=0;i< (sizeof(a)/sizeof(a[0][0])) ; i  )
    {
        *((int *)&a i) = max_value ;
    }        ShowMessage("Set Value = "   IntToStr(max_value) ) ;
}
skkyo
一般會員


發表:4
回覆:1
積分:1
註冊:2004-11-01

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-09-27 10:27:13 IP:163.28.xxx.xxx 未訂閱
引言:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    int a[3][3]={{3,2,2},{2,1,3},{1,2,3}} ;
    int i , j ;
    int *value ; 
    int count ,max_value = 0, max_count = 0 ;        for(i=0;i< (sizeof(a)/sizeof(a[0][0])) ; i  )
    {
        value =  ((int *)&a i) ;  ->這裡是什麼意思?
        count = 0 ;
        for(j=0;j< (sizeof(a)/sizeof(a[0][0])) ; j  )
        {
           if( *value  ==   *((int *)&a j))  ->還有這邊
                  count ;
        }
        if(count > max_count)
        {
            max_value = *value ;
            max_count = count ;
        }
    }
    for(i=0;i< (sizeof(a)/sizeof(a[0][0])) ; i  )
    {
        *((int *)&a i) = max_value ;
    }        ShowMessage("Set Value = "   IntToStr(max_value) ) ;
}
i_am_jcl
一般會員


發表:3
回覆:9
積分:2
註冊:2002-04-15

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-09-27 17:07:17 IP:220.130.xxx.xxx 未訂閱
value = ((int *)&a i) ; 將指標value指到 由陣列A的位址開始的第i個的整數的位址 依照上面迴圈敘述 for(i=0;i< (sizeof(a)/sizeof(a[0][0])) ; i ) 可以預期 value 將依序指到 &a[0][0] , &a[0][1] , &a[0][2] , ... ,&a[2][0], &a[2][1] , &a[2][2] 白話一點的說法就是 : 假設A的記憶體位址是X , 那value 將依序是 X,X 4 ,X 8 , X 12 , .... , X 32 (ps : sizeof(int) = 4 ) 參考圖 | a[0][0] | ----------> X | a[0][1] | ----------> X 4 | a[0][2] | ----------> X 8 | a[1][0] | ----------> X 12 | a[1][1] | ----------> X 16 | a[1][2] | ----------> X 20 | a[2][0] | ----------> X 24 | a[2][1] | ----------> X 28 | a[2][2] | ----------> X 32 那*value的值依照迴圈跑下來的結果 依序將會對應到 a[0][0] , a[0][1], a[0][2] , a[1][0] , a[1][1] , a[1][2] , a[2][0],a[2][1],a[2][2] ===================================================================== if( *value == *((int *)&a j)) 參照上面的解釋 這行就很單純了 將參考值*value 與 "目前選到的值" 作比較
系統時間:2024-05-18 4:38:25
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!