diff --git a/matrix.c b/matrix.c index 7509636..85f5b80 100644 --- a/matrix.c +++ b/matrix.c @@ -60,15 +60,19 @@ Matrix add(const Matrix matrix1, const Matrix matrix2) //test, if two matrix has exact size if(matrix1.rows != matrix2.rows || matrix1.cols != matrix2.cols) - return -1; - + return createMatrix(0,0); + + Matrix result_add = createMatrix(matrix1.rows, matrix1.cols); for(int r = 0; r < matrix1.rows; r++) { for(int c = 0; c < matrix1.cols; c++) { //TODO: matrix_add initialisieren - matrix_add[r][c] = matrix1[r][c] + matrix2[r][c] + //matrix_add[r][c] = matrix1[r][c] + matrix2[r][c] + + MatrixType sum = getMatrixAt(matrix1,r,c)+getMatrixAt(matrix2,r,c); + setMatrixAt(sum,result_add,r,c) //evtl re } } } @@ -76,13 +80,13 @@ Matrix add(const Matrix matrix1, const Matrix matrix2) Matrix multiply(const Matrix matrix1, const Matrix matrix2) { //Needed: rows/Zeilen, collums/Spalten - int buffer_add = 0; //TODO: Datentyp achten, ist int richitg? - Matrix result = {NULL, 0, 0} //Leere Matrix, falls fehler + MatrixType buffer_add = 0; //TODO: Datentyp achten, ist int richitg? + Matrix result = {NULL, 0, 0}; //Leere Matrix, falls fehler //Probe ob Spalten1 = Zeilen2 if(matrix1.cols != matrix2.rows) return -1; - result = createMatrix(matrix1.rows, matrix2.rows); // "" + result = createMatrix(matrix1.rows, matrix2.cols); // "" for(int index = 0; index < matrix1.rows; index++) { @@ -92,10 +96,10 @@ Matrix multiply(const Matrix matrix1, const Matrix matrix2) //TODO: matrix_add initialisieren { //buffer_add += matrix1[index][skalar]*matrix2[skalar][index]; - buffer_add += getMatrixAt(matrix1, index, skalar) + getMatrixAt(matrix2, skalar, shift); + buffer_add += getMatrixAt(matrix1, index, skalar) * getMatrixAt(matrix2, skalar, shift); } //matrix_mul[index][shift] = buffer_add; - setMatrixAt(buffer_add,result,index,shift); + setMatrixAt(buffer_add,result,index,shift); //result als Pointer, also mit &result } buffer_add = 0; }