Матрицы умножения - PullRequest
       11

Матрицы умножения

0 голосов
/ 03 мая 2018

Я написал матричный класс и у меня проблема с умножением. Я хочу умножить только квадратные матрицы и не знаю, как с этим справиться. Кто-нибудь может помочь? Некоторый код ниже:

//mSize - matrix size, mP - matrix pointer
int mSize, *mP;

//constructor
matrix(){
    mP = NULL;
    mSize = 0;
}

 matrix operator*(const matrix & mat){
    matrix mul;
    mul.mSize = mat.mSize;
    mul.mP = new int[mul.mSize * mul.mSize];
    if(mSize == mat.mSize){
        for(int i = 0; i < mul.mSize * mul.mSize; i++){
            for(int j = 0; j < mul.mSize * mul.mSize; j++){
                for(int k = 0; k < mul.mSize * mul.mSize; k++){
                    mul.mP[i*j] += mP[i*k] * mat.mP[k*j];  <-- that line is not good but I don't know if only that
                }
            }
        }
    }else {
        cout << "error";
        exit(-1);
    }
    return mul;
}

1 Ответ

0 голосов
/ 06 мая 2018
def matrixmulti(a,b):
    if len(a[0])==len(b):                          #check it
        result=[[]*len(a) for i in range(len(b))]  #create empty matrix
        value=0
        for i in range(len(a)):                    #row of the a
            for j in range(len(b[0])):             #column of the b
                for k in range(len(b)):            #row of the b 
                    value+=a[i][k]*b[k][j]
                result[i].append(value)
                value=0
        return result
    else:
        return False

a=[[1,2],
   [3,4]]

b=[[5,6],
   [7,8]]

print(matrixmulti(a,b))

это код Python и работает неправильно, если не квадратная матрица. Я надеюсь, что это решит вашу проблему. Я надеюсь, что вы понимаете код.

...