-3

このコードは、行列 a と行列 b およびそれらのポインタを matrixMultiply メソッドに送信する乗算 2 行列に対して機能します。

しかし、「matrix12[i][j] += matrix1[i][k] * matrix2[k];」という行で問題が発生しました。

double **matrixMultiply(double *matrix1,double *matrix2,int row1,int col1,int col2){

    double **matrix12 = malloc(sizeof(double*)*row1);
    for (int i=0; i<row1; i++){
        matrix12[i] = malloc(sizeof(double*)col2);

        for (int j=0; j<col2; j++){
            matrix12[i][j] = 0.0;

            for (int k=0; k<col1; k++){
                matrix12[i][j] += matrix1[i][k] * matrix2[k]; //invalid operands to binary expression
            }
        }
    }
    return matrix12;
}

double *kmult = *matrixMultiply(a, b, 4, 4, 4,);

Ps.このコードはViewController.mで宣言します

4

1 に答える 1

0

Matrix1 は 2 次元の行列でよろしいですか? これは 1 次元の行列で宣言されています: "double **matrix1" の代わりに double *matrix1 これがおそらく行 matrix12[i][j] += matrix1[i][k] * matrix2[k]; の理由です。動作しません。

于 2013-02-13T14:33:41.033 に答える