2015-12-27 67 views
1

假設A是浮點數的table,具有krowsmcolumns, 和B是浮點數的table,具有mrowsncolumns。我們希望產生一個new table,C,其中C的每個元素由以下因素決定:C程序卡住計算矩陣(二維數組)

C[i][j] = A[i][1]*B[1][j]+ A[i][2]*B[2][j]+ ,..., A[i][m]*B[m][j] 

where i = 1, 2, …, k and j = 1, 2, …, n 

,這就是我工作的

#include <stdio.h> 
#include <math.h> 
int main() 
{ 
float A[10][10], B[10][10], C[10][10]; 
int k, i, j, l, m, n; 
printf("Enter the number of rows and columns of matrix A:\n"); 
scanf("%d%d",&k,&m); 
printf("Enter elements of matrix A:\n"); 
for (i=0;i<k;i++) 
    for (j=0;j<m;j++) 
    scanf("%f",&A[i][j]); 

printf("Enter the number of rows and columns of matrix B:\n"); 
scanf("%d%d",&m,&n); 
printf("Enter elements of matrix N:\n"); 
for (i=0;i<m;i++) 
    for (j=0;j<n;j++) 
    scanf("%f",&B[i][j]); 

兩種掃描matrix後,我該怎麼辦下一步計算C,這個讓我很困惑。我不知道我是否可以將AB掃描放入一個嵌套循環中。任何幫助將不勝感激。

+0

您正在使用'm'兩次。我想你是第一次說'我'。 –

+0

哦,只是一個冗餘的,我用了兩次,因爲A中的列數等於B中的行數 –

+0

「_where i = 1,2,...,k和j = 1,2,...,n_」 - 但是數組索引從0開始,以C結尾的長度爲-1。你的意思是「其中i = 0,1,2,...,k-1和j = 0,1,2,...,n-1」 ? –

回答

1

矩陣A的大小爲kxm,矩陣B的大小爲mxn。結果矩陣的大小爲kxn。 所以你可以像下面那樣啓動for循環。

for (i=0;i<k;i++) 
    for(j=0;i<n;j++) 
    { 
    //perform the desired operation in matrix C . 
    } 

請注意:您正在使用「m」兩次。

+0

令我困惑的是A中的列數等於B中的行數「m」,所以我認爲當我單獨掃描兩個矩陣時可能會有一些衝突。 –

-1

您可以嘗試類似這樣的方式,使用矩陣陣列而不是使用A,B,C。「row」和「col」用於存儲矩陣的維數,通知col[0]應該等於row[1]

float matrix[3][10][10]; 
int i, j, k, row[2], col[2]; 
for(i=0; i<2; i++){ 
    printf("Enter the number of rows and columns of matrix %d:\n", i+1); 
    scanf("%d %d", &row[i], &col[i]); 
    for(j=0; j<row[i]; j++) 
    for(k=0; k<col[i]; k++) 
     scanf("%f", &matrix[i][j][k]); 
}