Advertisement
AntonioVillanueva

Multiplicar Matrices

Nov 25th, 2015
219
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.71 KB | None | 0 0
  1. //Ex 20 multiplication de matrices
  2. #include <iostream>
  3. #include <vector>
  4. using namespace std;
  5. typedef vector <vector<int> > Matrice;
  6. Matrice lire_matrice();
  7. Matrice multiplication (const Matrice& M1,const Matrice& M2);
  8. void affiche_matrice (const Matrice& M);
  9.  
  10. int main(){
  11.     Matrice M1,M2;
  12.     M1=lire_matrice();
  13.     M2=lire_matrice();
  14.    
  15.     //M1={{1,2,3},{4,5,6}};//Test
  16.     //M2={{1,2,3,4},{5,6,7,8},{9,0,1,2}};//Test
  17.     //resultat test ...
  18.     // 38 14 20 26
  19.     // 83 38 53 68
  20.     if (M2.size()==M1[0].size()){//nombre lignes M2 identique colonnes M1
  21.        
  22.         affiche_matrice(multiplication ( M1, M2));
  23.     }else {
  24.        
  25.         cout<<"Multiplication de matrices impossible !"<<endl;
  26.     }
  27.    
  28.     return 0;
  29. }
  30.  
  31. Matrice lire_matrice(){
  32.     size_t lignes(0),max_lignes(0),colonnes(0),max_colonnes(0);
  33.     int valeur(0);
  34.     Matrice tmp;
  35.     cout <<"Saissie d'une matrice :"<<endl<<"Nombre de lignes : ";
  36.     cin>>max_lignes;
  37.     cout <<"Nombre de colonnes : ";
  38.     cin >>max_colonnes;
  39.    
  40.     for (lignes=0;lignes< max_lignes;lignes++){
  41.         tmp.push_back(vector<int> ());
  42.         for (colonnes=0;colonnes<max_colonnes;colonnes++){
  43.             cout<<"M["<<lignes<<","<<colonnes<<"]=";
  44.             cin>> valeur;
  45.             tmp[lignes].push_back(valeur);
  46.         }
  47.     }  
  48.     return tmp;
  49. };
  50.  
  51. void affiche_matrice (const Matrice& M){
  52.     for (auto ligne:M){
  53.         cout<<endl;
  54.         for (auto elem:ligne){     
  55.         cout << elem << " ";};
  56.     }
  57.     cout <<endl;
  58. };
  59.  
  60. Matrice multiplication (const Matrice& M1,const Matrice& M2){
  61.     size_t N=M1.size();
  62.     size_t M=M1[0].size();
  63.     size_t X=M2.size();
  64.  
  65.     size_t i,j,k;
  66.    
  67.     Matrice c( M1.size(),std::vector <int>(M2[0].size()));
  68.    
  69.     for (i=0; i<N; i++)
  70.         for (j=0; j<=M; j++)  {
  71.            
  72.             c[i][j] = 0;
  73.             for (k=0; k<X; k++)
  74.             c[i][j] += M1[i][k] * M2[k][j];
  75.     }
  76.     return c;
  77. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement