Newsgroup: it.comp.lang.c++
Titolo: prodotto tra matrici

avete qualche piccolo programma?
grazie

grazie
Se si tratta di compiti pero' io ci andrei molto
molto cauto a portare codice come questo.
Se trovi un insegnante che non conosce questa parte
del C++ prendi zero, se ne trovi uno che la conosce
(e tu non la conosci) allora di sicuro ti becca e
tu oltre a prendere zero finisci dal preside.
HTH
Andrea

per ora, senza usare classi questo è
#include <cstdlib>
#include <iostream>
#include <ctime>
int main()
{
srand(time (0));
int riga1;
int colonna1;
int riga2;
int colonna2;
cout << "Data la matrice M immetti il numero di righe:";
cin >> riga1;
cout << "\ne di colonne:";
cin >>colonna1;
cout << "Data la matrice G immetti il numero di righe:";
cin >> riga2;
cout << "\ne di colonne:";
cin >>colonna2;
//istanzio le 2 matrici con valori casuali
int M[riga1][colonna1],G[riga2][colonna2];
 for (int i = 0;i < riga1; i++)
        {
        for (int j=0;j<colonna1;j++)
         {
         M[i][j] = rand()%10;
         }
        }
 for (int i = 0;i < riga2; i++)
        {
        for (int j=0;j<colonna2;j++)
         {
         G[i][j] = rand()%10;
         }
        }
//stampa la matrice M se esiste
if ((riga1 != 0)&&(colonna1 != 0)) {
 cout << "matrice M" << endl;
 for (int i=0;i<riga1;i++)
        {
        for (int j=0;j<colonna1;j++)
        {cout << M[i][j] << " | ";}
        cout << endl;
        }
        system ("pause");
      }
 else cout << "M non esiste"<< endl;
//stampa la matrice G se esiste
 if ((riga2 != 0)&&(colonna2 != 0))
 {
 cout << "matrice G" << endl;
 for (int i=0;i<riga2;i++)
        {
        for (int j=0;j<colonna2;j++)
        {cout << G[i][j] << " | ";}
        cout << endl;
        }system ("pause");
 }
 else cout << "G non esiste"<< endl;
//se una delle 2 non esiste esci
if ((( (riga1 == 0)||(colonna1 == 0) ) || ( (riga2 == 0)||(colonna2 ==
0)) )) {return 0;}
/*il prodotto tra matrici si fa riga di m x colonna di g, questo significa
necessariamente
che il numero di colonne di M deve essere uguale al numero di righe di G*/
if (riga2==colonna1) cout << "E' permesso il prodotto di M x G" << endl;
if (riga1==colonna2) cout << "E' permesso il prodotto di G x M" << endl;
system ("pause");
int MXG[riga1][colonna2];
int GXM[riga2][colonna1];
/* la cella di posto i,j nella matrice prodotto è pari alla somma dei
prodotti degli elementi
della i esima riga di M e della j esima colonna di G
i = riga1
k = riga2
j = colonna1
l = colonna2
*/
//M x G
if (riga2==colonna1){
 for (int i = 0;i < riga1; i++)
        {
        for (int l = 0;l<colonna2;l++)
         {
         MXG[i][l] = 0;
         int j;
         int k;
         for ((j = 0),(k = 0); (j < colonna1), (k < riga2); (j++), (k++))
             {MXG[i][l] = MXG[i][l]+(M[i][j]*G[k][l]);
             }
         }
        }
//stampa M x G
 cout << "matrice MxG" << endl;
 for (int i=0;i<riga1;i++)
        {
        for (int j=0;j<colonna2;j++)
        {cout << MXG[i][j] << " | ";}
        cout << endl;
        }system ("pause");
}
//G x M
if (riga1==colonna2){
 for (int i = 0;i < riga2; i++)
        {
        for (int l = 0;l<colonna1;l++)
         {
         GXM[i][l] = 0;
         int j;
         int k;
         for ((j = 0),(k = 0); (j < colonna2), (k < riga1); (j++), (k++))
             {GXM[i][l] = GXM[i][l]+( G[i][j]*M[k][l] );
             }
         }
        }
//stampa G x M
 cout << "matrice GxM" << endl;
 for (int i=0;i<riga2;i++)
        {
        for (int j=0;j<colonna1;j++)
        {cout << GXM[i][j] << " | ";}
        cout << endl;
        }system ("pause");
}
return 0;}
con dev-c++ funziona sotto windows
ciao