2013-03-20 94 views
0

我無法完成此代碼請幫助我!我不得不矩陣和程序功能定義從C中的用戶獲取2D矩陣元素的函數

int main(int argc, char *argv[]) 
{ 
    int r1,c1; 
    printf("Enter dimension of first matrix :"); 
    scanf("%d %d",&r1,&c1); 

    int m1[r1][c1]; 
    GetArray(m1,r1,c1); 


    system("PAUSE"); 
    return 0; 
} 
void GetArray(int arr[][],int _row,int _column) 
{ 
    int i,j,num; 
    printf("Enter number: "); 
    for(i==0;i<_row;i++){ 
     for(j==0;j< _column;j++){ 
      scanf("%d",&num); 
      arr[i][j]=num;}} //give error in this line 
} 
+0

你一定要明白,那''==檢查平等和'='是賦值,這是你想要的。 – Porkbutts 2013-03-20 20:01:16

+0

'int m1 [r1] [c1];'你看,你不能用'r1'和'c1'從鍵盤讀取。你需要動態分配'm1'。或者給出比鍵盤輸入大的m1固定尺寸,並聲明r1和c1靜態常量。 – 2013-03-20 20:19:11

回答

1

在C語言程序讀取矩陣的項目,==用於比較和=用於賦值操作。您肯定會想要在for循環中將值分配給ji。在你的情況下,你並沒有初始化循環變量(當你在函數的開頭聲明它們),並且由於它們在未初始化時會得到垃圾值,所以你試圖超越你正在使用的數組邊界for循環,從而導致分段錯誤。

+0

感謝您的回答==我的粗心大意。主要問題是我不得不初始化函數的第二維數組,如 void GetArray(int arr [] [3],int _row,int _column) – user2192510 2013-03-20 20:30:00

+0

哦,我忘了提及它。是的,你也必須指定第二維。我很高興如果我可以幫助:) – Varaquilex 2013-03-20 20:32:17

0
int main(int argc, char *argv[]) 
{ 
    int r1,c1; 
    printf("Enter dimension of first matrix :"); 
    scanf("%d %d",&r1,&c1); 
    int **m1; 
    for(int i = 0; i<r1 ;++i) // use c99 ! 
     m1[i] = malloc(c1* sizeof(int)); 
    GetArray(m1,r1,c1); 
    system("PAUSE"); 
    for(int i = 0; i<r1 ;++i) 
     free(m1[i]); 
    return 0; 
} 
void GetArray(int ** m1,int _row,int _column) 
{ 
    int i,j,num; 
    printf("Enter number: "); 
    for(i=0;i<_row;i++){ 
     for(j=0;j< _column;j++){ 
      scanf("%d",&num); 
      m1[i][j]=num;}} //give error in this line 
} 

未經測試