Je vous pose cette question parce que mon programme ont deux fonctions de multiplier les matrices, ils se multiplient uniquement en 4x4 et 4x1 matrices. Les en-têtes sont:
double** mult4x1(double **m1, double **m2);
double** mult4x4(double **m1, double **m2);
Ils n'm1*m2 et retourner dans une **double, ci-dessous est un extrait de 4x4 de multiplication.
double** mult4x4(double **m1, double **m2){
double** result = (double**) malloc(sizeof(double)*4);
for (int i = 0; i < 4; i++) {
result[i] = (double*) malloc(sizeof(double)*4);
}
...multiply...
return result;
}
La différence entre mult4x1 et mult4x4 ne sont que dans les index utilisés à l'intérieur d'eux.
J'ai ces 3 matrices:
double m1[4][4] = {
{2, 3, 5, 6},
{9, 8, 1, 7},
{5, 4, 3, 1},
{7, 6, 1, 2}
};
double m2[4][4] = {
{1, 0, 0, 0},
{0, 1, 0, 0},
{0, 0, 1, 0},
{0, 0, 0, 1}
};
double m3[4][1] = {
{2},
{3},
{3},
{1}
};
En essayant de multiplier ces matrices, une erreur se produit.
double** test = mult4x4(m1, m2);
double** test2 = mult4x1(identity4x4(), m3);
//identity4x4() creates a 4x4 identity matrix - double** identity4x4();
Rendements:
erreur: impossible de convertir
double (*)[4]' to
double*' for argument1' to
double* mult4x4(double*double*)'erreur: impossible de convertir
double (*)[1]' to
double*' for argument2' to
double* mult4x1(double*double*)'
N'est-ce pas double[][] censé être égal à **double? Un tableau de tableaux de double. Toutes les clarifications, les idées fausses et les erreurs sont les bienvenus.