請問動態矩陣問題 |
答題得分者是:syntax
|
thumbhero
一般會員 發表:2 回覆:1 積分:0 註冊:2007-10-12 發送簡訊給我 |
請問一下,我想寫一函式來作兩個矩陣的捲積,以下是我的部分程式:
[code cpp] int smfter3[3][3] = {1,1,1,1,1,1,1,1,1}; int **maskBuff; maskBuff = new int*[m_h]; //動態new一個maskBuff , 大小取決於讀入檔案大小 for(int i=0; i<=m_w; i ) maskImg[i] = new int[m_w]; [/code] 以下部分作捲積, 於外部呼叫函式 [code cpp] for(int i=0; i<=bmp3->Width; i ) for(int j=0; j<=bmp3->Height; j ) maskImg[i][j] = CONVOL(smfter3,maskBuff,i,j,m_choice); //這行會有error [/code] 外部函式: [code cpp] int TForm1::CONVOL(int** mask, int** img, int a, int b, int m_ch) { int R=0; for(int i=0; i<=m_ch*2 1; i ) { for(int j=0; j<=m_ch*2 1; j ) { R = R img[a m_ch][b m_ch]*mask[i][j]; if(R>255) R=255; if(R<0) R=0; } } return R; } [/code] 但是compile 會出現error, error msg如下: [C Error] Unit1.cpp(388): E2034 Cannot convert 'int ( *)[3]' to 'int * *' [C Error] Unit1.cpp(388): E2342 Type mismatch in parameter 'mask' (wanted 'int * *', got 'int ( *)[3]') 想請問是為什麼呢? 謝謝回答!! |
syntax
尊榮會員 發表:26 回覆:1139 積分:1258 註冊:2002-04-23 發送簡訊給我 |
給你幾個思考的方向
1. int *Array_A Array_A = new int *[5]; 然後 Array_A[2] 是什麼?*Array_A[2] 又是什麼 2. int *Array_A; int **Array_B; Array_A[] = new int *[5] for yyyyy Array_A[] or ArrayB[] = new int *[5] 又差在哪裡? Array_A[] or ArrayB[] = new int *[25] 又有何差異? Array_A[] or ArrayB[] = new int *[30] 又有何差異? 3. maskImg[i] = new int[m_w]; maskImg[i] = new int *[m_w]; 又各代表哪種意思? 4. 最後 int smfter3[3][3] = {1,1,1,1,1,1,1,1,1}; smfter3 可以直接傳給 int** mask ? 還是要(int**) &smfter3 或 (int **) &smfter3[0] ? 5. struct ...略 int p1; int *p2; ... 略 k 略 k *sK; k gk; 略 a. sK->p1 與 *sK.p1 與 *sK->p1 與 sK.p1 哪些對?哪些稍做修正,就會對,哪些怎麼修都不對? b. gK->p1 與 *gK.p1 與 *gK->p1 與 gK.p1 哪些對?哪些稍做修正,就會對,哪些怎麼修都不對? c. sK->p2 與 *sK.p2 與 *sK->p2 與 sK.p2 哪些對?哪些稍做修正,就會對,哪些怎麼修都不對? d. gK->p2 與 *gK.p2 與 *gK->p2 與 gK.p2 哪些對?哪些稍做修正,就會對,哪些怎麼修都不對? 以上能釐清,以後,你使用指標,一定游刃有餘 ===================引 用 thumbhero 文 章=================== 請問一下,我想寫一函式來作兩個矩陣的捲積,以下是我的部分程式: [code cpp] int smfter3[3][3] = {1,1,1,1,1,1,1,1,1}; int **maskBuff; maskBuff = new int*[m_h]; //動態new一個maskBuff , 大小取決於讀入檔案大小 for(int i=0; i<=m_w; i ) maskImg[i] = new int[m_w]; [/code] 以下部分作捲積, 於外部呼叫函式 [code cpp] for(int i=0; i<=bmp3->Width; i ) for(int j=0; j<=bmp3->Height; j ) maskImg[i][j] = CONVOL(smfter3,maskBuff,i,j,m_choice); //這行會有error [/code] 外部函式: [code cpp] int TForm1::CONVOL(int** mask, int** img, int a, int b, int m_ch) { int R=0; for(int i=0; i<=m_ch*2 1; i ) { for(int j=0; j<=m_ch*2 1; j ) { R = R img[a m_ch][b m_ch]*mask[i][j]; if(R>255) R=255; if(R<0) R=0; } } return R; } [/code] 但是compile 會出現error, error msg如下: [C Error] Unit1.cpp(388): E2034 Cannot convert 'int ( *)[3]' to 'int * *' [C Error] Unit1.cpp(388): E2342 Type mismatch in parameter 'mask' (wanted 'int * *', got 'int ( *)[3]') 想請問是為什麼呢? 謝謝回答!!
編輯記錄
syntax 重新編輯於 2007-11-06 23:37:57, 註解 無‧
|
jenwe
一般會員 發表:34 回覆:38 積分:24 註冊:2007-03-23 發送簡訊給我 |
|
jenwe
一般會員 發表:34 回覆:38 積分:24 註冊:2007-03-23 發送簡訊給我 |
|
thumbhero
一般會員 發表:2 回覆:1 積分:0 註冊:2007-10-12 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |