Ciao a tutti.
Devo fare un programma con i vector che permetta di moltiplicare due matrici di qualsiasi taglia (dopo aver verificato che la taglia è compatibile per la moltiplicazione).

Questo è il mio programma; compila ma non funziona...

Credo di non aver capito bene come funzionano i vector di vector (i vettori a una dimensione li so usare!).

Ecco il mio programma:

codice:
#include<iostream>
using std::cout;
using std::cin;
using std::endl;
using std::cerr;

#include<vector>
using std::vector;

// ======================================================================

typedef vector< vector<double> > Matrix;

// ======================================================================

Matrix read_Matrix()
{
    int l(0), c(0);
    double d(0);
    Matrix M;
    
    cout << "Matrix dimension: ";
    cin >> l >> c;
    
    for(int i(0); i < l; i++)
    {
        for(int j(0); j < c; j++)
        {
            cout << "M_" << i << "_" << j << ": ";
            cin >> d;
            
            M[i][j] = d;
        }
    }
    
    return M;
}

// ======================================================================

Matrix multiply_Matrix(const Matrix& M1, const Matrix& M2)
{
    Matrix M;
    
    if(M1[0].size() != M2.size())
    {
        cerr << "Error: impossible moltiplication." << endl;
        
        return M;
    }
    
    for(int i(0); i < M1[0].size(); i++)
    {
        for(int j(0); j < M1.size(); j++)
        {
            M[i][j] = M1[j][i] * M2[i][j];
        }
    }
    
    return M;
}

// ======================================================================

void print_Matrix(const Matrix& M)
{
    cout << "Matrix:" << endl;
    
    for(int i(0); i < M[0].size(); i++)
    {
        for(int j(0); j < M.size(); j++)
        {
            cout << M[i][j];
        }
        
        cout << endl;
    }
}

// ======================================================================

int main()
{
    Matrix M1, M2, M;
    
    M1 = read_Matrix();
    M2 = read_Matrix();
    
    M = multiply_Matrix(M1, M2);
    
    print_Matrix(M1);
    
	return 0;
}
Avrei bisogno di un aiuto, perché ho un test di informatica giovedì... =S.

Grazie!

Ps: Non sono ancora in grado di utilizzare gli iteratori e non potrò utilizzarli durante il test.