2016-05-31 47 views
-2

我在C中是全新的。我的任務是在每一行中找到最小值,然後用矩陣執行一些轉換。我使用動態二維數組,但突然出現誤解與指針。 Visual Studio中顯示我的錯誤這樣的列表,它與功能min連接:查找動態數組中的最小值C

Warning 2 warning C4047: ':' : 'int *' differs in levels of indirection from 'int' 
Warning 1 warning C4047: '<' : 'int *' differs in levels of indirection from 'int' 
Warning 3 warning C4047: '=' : 'int' differs in levels of indirection from 'int *' 
Error 1 error C2059: syntax error : 'type' 

我沒有任何想法,爲什麼這些錯誤發生。

void transformMatrix(int** arr, int rowCount, int colCount) 
    { 
     int i,j; 
     int minElem; 
     for (i=0; i < rowCount; i++) 
     { 
      minElem = min (arr[i], colCount); 
      for (j=0; j < colCount; j++) 
      { 
       if (i%2 ==0) 
       { 
        arr[i][j] -= minElem; 
       } 
       else 
       { 
        arr[i][j] += minElem; 
       } 
      } 
     } 
    } 

    int min(int* arr, int elemCount) 
    { 
     int minEl = arr[0]; 
     int i; 
     for (i=1; i < elemCount; i++) 
     { 
      if (arr[i]<minEl) 
      { 
       minEl = arr[i]; 
      } 
     } 

     return minEl; 
    } 
+0

'minElem =分鐘(ARR [I],colCount);'min'和'(',空間意之間' –

+1

@Matputer Althought我也認爲這是難看和不安(*不如'int * arr'*),這是有效的。所以,你的意思是什麼? –

+0

不,這是意外的。我已經刪除了這個空間,沒有任何改變。 – MyName

回答

1

功能min標識符MSVC的stdlib.h已經被用作宏

#define min(a,b) (((a) < (b)) ? (a) : (b)) 

你的函數重命名爲別的東西。

+0

非常感謝!它幫助了我! – MyName

0

未發現錯誤。這是你的代碼,我運行以下結果並正常工作。如果它仍然給它,告訴我。所以我可以刪除它。

結果

12  13  14                                                
13  14  15                                                
14  15  16                                                
Transforming  

0  1  2                                                 
1  2  3                                                 
2  3  4 

#include <stdio.h> 
#include <stdlib.h> 


    int min(int* arr, int elemCount) 
    { 
     int minEl = arr[0]; 
     int i; 
     for (i=1; i < elemCount; i++) 
     { 
      if (arr[i]<minEl) 
      { 
       minEl = arr[i]; 
      } 
     } 

     return minEl; 
    } 

    void transformMatrix(int** arr, int rowCount, int colCount) 
    { 
     int i,j; 
     int minElem; 
     for (i=0; i < rowCount; i++) 
     { 
      minElem = min (arr[i], colCount); 
      for (j=0; j < colCount; j++) 
      { 
       if (i%2 ==0) 
       { 
        arr[i][j] -= minElem; 
       } 
       else 
       { 
        arr[i][j] += minElem; 
       } 
      } 
     } 
    } 



int main() 
{ 
    int **aray; 
    aray = (int **) malloc(sizeof(int *) * 3); 
    aray[0] = (int *) malloc(sizeof(int) * 3); 
    aray[1] = (int *) malloc(sizeof(int) * 3); 
    aray[2] = (int *) malloc(sizeof(int) * 3); 

    for (int i=0; i<3; i++) 
    { 

    for (int j=0; j<3; j++){ 
     aray[i][j] = i+j+12; 
     printf("%d \t", aray[i][j]); 
     } 
    printf("\n"); 
    } 

    printf("Transforming \n"); 
    transformMatrix(aray, 3, 3); 

    for (int i=0; i<3; i++) 
    { 

    for (int j=0; j<3; j++){ 
     aray[i][j] = i+j; 
     printf("%d \t", aray[i][j]); 
    } 
    printf("\n"); 
    } 

    return 0; 
}