2016-12-04 211 views
0

如何從函數返回矩陣?我正在製作一個程序,它不斷地向一個函數發送一個矩陣,並且還需要不斷地從一個函數返回一個矩陣,我很善於知道如何將一個矩陣發送給一個函數(帶有雙指針),但是每次我嘗試調用它表示它是一種不兼容的類型。 這是一個功能我用一個例子:從函數返回矩陣

float *filtrar(float val, int col, float **M) 
{ 
    int i=0,j,k=0; 
    float temp[4][6],linea[6]; 
    if (existe(val, col, M)>0) 
    { 
     for (i=0; i<tam; i++) 
     { 
      if (linea[col]==val) 
      { 
       for (j= 0; j <6; j++) 
        temp[k][j]=M[i][j]; 
        k++; 
       } 
      } 
     } 
    } 
    else 
    { 
     for (i=0; i<tam; i++) 
     { 
      if (linea[col]==inferior(val,col,M)||linea[col]==superior(val,col,M)) 
      { 
       for (j= 0; j < 6; j++) 
       { 
        temp[k][j]=M[i][j]; 
        k++; 
       } 
      } 
     } 
    } 
} 

這裏是調用該機能的研究的一部分:

float **m=filtrar(v1,t1,agua_vapor); 

這最後一部分是一個地方,我需要你的幫助,因爲我不知道如何給asigne從函數中得到的矩陣變爲變量m,我不知道它是否應該作爲pointe,雙指針,共同矩陣等等。

我會感激如果有人能告訴我如何去做。

下面是我如何申報了矩陣的工作,非常相似的一個,以前的功能顯示使用的情況下,任何人都在想,我是怎麼做的例子:

float *carga_archivo(char nombre_de_archivo) 
{ 
    float M[200][6]; 
    float *p[6], **q; 
    int i=0; 
    FILE *archivo; 
    archivo=fopen(nombre_de_archivo,"r"); 
    while(!feof(archivo)) 
    { 
     fscanf(archivo,"%f\t%f\t%f\t%f\t%f\t%f\n",&M[0][i],&M[1][i],&M[2][i],&M[3][i],&M[4][i],&M[5][i],&M[6][i]); 
     i++; 
    } 
    tam=i; 
    for(i=0;i<6;i++) 
     p[i]=M[i]; 
    q=p; 
    fclose (archivo); 
    return M; 
} 

任何修正在可能的寫作或方式問這個問題是值得歡迎的。

+0

你的函數返回值的類型爲float *的,並已申報米爲float ** –

+0

也在你的函數filtrar中,你從哪裏返回函數? –

+0

@HardikSanghvi我沒有得到第二個評論,你問的矩陣來自哪裏? –

回答

0

如果你想回到你需要聲明的功能矩陣型矩陣,我的意思是:

float** filtrar(float val, int col, float **M) 
{ 
    /* stuff that filtrar do */ 
    return M 
}