#include #include using namespace std; /* Produit de deux matrices */ double** matrice(int m, int n){ double** M; int i; M = (double**)malloc(m * sizeof(double*)); for (i = 0; i < m; i++) M[i] = (double*)malloc(n * sizeof(double)); return M; } void free_matrice(double** M, int m){ int i; for (i = 0; i < m; i++) free(M[i]); free(M); } void affichage(double** M, int m, int n){ int i, j; for (i = 0; i < m; i++){ for (j = 0; j < n; j++) cout << M[i][j] << " "; cout << endl; } cout << endl; } void produit(double** A, double** B, double** C, int m, int n, int p){ int i, j, k; for (i = 0; i < m; i++) for (k = 0; k < p; k++){ C[i][k] = 0.; for (j = 0; j < n; j++) C[i][k] += A[i][j] * B[j][k]; } } int main(){ int m = 2, n = 2, p = 3; double **A, **B, **C; int i,j; A = matrice(m,n); B = matrice(n,p); C = matrice(m,p); for (i = 0; i < m; i++) for (j = 0; j < n; j++) A[i][j] = (i+1)*(j+2); affichage(A,m,n); for (i = 0; i < n; i++) for (j = 0; j < p; j++) B[i][j] = (i+1)*(j+2); affichage(B,n,p); produit(A,B,C,m,n,p); affichage(C,m,p); free_matrice(A,m); free_matrice(B,n); free_matrice(C,m); return 0; }