Calcul matriciel en C++ - Multiplication de deux matrices

Produit multiplication de deux matrice en C++


#include<stdio.h>
#include<stdlib.h>
#include <iostream>
using namespace std;
typedef struct matrice
{
 int ligne;
 int colonne;
 int** data;
}matrice;
struct matrice creer_matrice(int ligne, int colonne){
 struct matrice m;
 m.ligne = ligne;
 m.colonne = colonne;
 m.data = (int**)malloc(m.ligne*sizeof(int *));
 for(int i = 0; i< m.ligne; ++i){
 // initialiser les cases à 0 avec calloc
 m.data[i] = (int *)calloc(m.colonne,sizeof(int)); 
 }
 return m;
}

void afficher_matrice(matrice M){
 for(int i = 0; i < M.ligne; i++) {
 for(int j = 0; j < M.colonne; j++) {
 cout << M.data[i][j] ;
 cout << "\t";
 }
 //retour à la ligne
 cout << "\n";
 }
 cout << "\n";
}

struct matrice produit(matrice A, matrice B)
{
 matrice C = creer_matrice(A.ligne, B.colonne);
 for(int I = 0; I < A.ligne; I++)
 for(int J = 0; J < B.colonne; J++)
 {
 C.data[I][J] = 0;
 for(int K = 0; K < A.colonne; K++)
 {
 C.data[I][J] += A.data[I][K] * B.data[K][J];
 }
 }
 return C;
}

int main(int argc, char *argv[])
{
 /*
 matrice A
 */
 matrice A = creer_matrice(4,3);
 srand(time(NULL));
 for(int i=0; i<A.ligne ;i++)
 for(int j=0; j<A.colonne; j++)
 //Générer des nombre aléatoires entre 0 et 20 et soustraire 10
 //pour avoir des nombres négatives
 //ex : si rand génere 74 alors 74-100 = -36
 A.data[i][j] =rand()%20-10; 
 afficher_matrice(A);
 
 /*
 2ème matrice
 */
 matrice B = creer_matrice(3,5);
 srand(time(NULL));
 for(int i=0; i<B.ligne ;i++)
 for(int j=0; j<B.colonne; j++)
 //Générer des nombre aléatoires entre 0 et 20 et soustraire 10
 //pour avoir des nombres négatives
 //ex : si rand génere 74 alors 74-100 = -36
 B.data[i][j] =rand()%20-10; 
 afficher_matrice(B);
 
 //produit
 //matrice C = produit(A,B);
 //afficher_matrice(C);
 afficher_matrice(puissance(A));
 system("pause");
}

Commentaires (0)

Connectez-vous pour commenter

Rejoignez la discussion et partagez vos connaissances avec la communauté

Chargement des commentaires...