我正在编写一个程序,该程序将从文件中读取具有以下格式的矩阵:
2 3
0 1 2
3 4 5
我将使用一维数组(也包含维度,代表该数组,因此生成的数组将为:
A: {2, 3, 0, 1, 2, 3, 4, 5}
现在,我要将此矩阵乘以另一个格式相同的矩阵。我知道如何将两个矩阵相乘,我唯一的问题是在实际写作中。我不确定自己在做什么错,因为当我逐步执行这些步骤时,这似乎是合乎逻辑的,但显然并非如此。
下面是我尝试将两个矩阵相乘的方法:
void multiply(double *A, double *B){
double *C=malloc(B[1]*A[0]*sizeof *C);
int a_rows=A[0];
int a_cols=A[1];
int b_rows=B[0];
int b_cols=B[1];
printf("ar: %d, ac: %d, br: %d bc: %d\n", a_rows, a_cols, b_rows, b_cols);
int l = 0;
double val = 0;
for(int i=2;i<b_rows+2;i++){
for(int j=2;j<b_cols+2;j++){
for(int k=0;k<a_cols;k++){
val=val+A[i*b_cols+k]*B[b_rows*b_rows+j];
}
C[l]=val;
l++;
val = 0;
}
}
for(int i=0;i<b_cols*a_rows;i++){
printf("%d: %f\n",i, C[i]);
}
free(C);
}
现在,我相信我在索引编制方面一定犯了一个错误,但此刻已经超出了我的范围。