fix errors in matrix

This commit is contained in:
maxgrf 2025-11-15 03:49:05 +01:00
parent bf7355b3c5
commit 113cb5adb3

View File

@ -60,15 +60,19 @@ Matrix add(const Matrix matrix1, const Matrix matrix2)
//test, if two matrix has exact size //test, if two matrix has exact size
if(matrix1.rows != matrix2.rows || matrix1.cols != matrix2.cols) 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 r = 0; r < matrix1.rows; r++)
{ {
for(int c = 0; c < matrix1.cols; c++) for(int c = 0; c < matrix1.cols; c++)
{ {
//TODO: matrix_add initialisieren //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) Matrix multiply(const Matrix matrix1, const Matrix matrix2)
{ {
//Needed: rows/Zeilen, collums/Spalten //Needed: rows/Zeilen, collums/Spalten
int buffer_add = 0; //TODO: Datentyp achten, ist int richitg? MatrixType buffer_add = 0; //TODO: Datentyp achten, ist int richitg?
Matrix result = {NULL, 0, 0} //Leere Matrix, falls fehler Matrix result = {NULL, 0, 0}; //Leere Matrix, falls fehler
//Probe ob Spalten1 = Zeilen2 //Probe ob Spalten1 = Zeilen2
if(matrix1.cols != matrix2.rows) if(matrix1.cols != matrix2.rows)
return -1; return -1;
result = createMatrix(matrix1.rows, matrix2.rows); // "" result = createMatrix(matrix1.rows, matrix2.cols); // ""
for(int index = 0; index < matrix1.rows; index++) for(int index = 0; index < matrix1.rows; index++)
{ {
@ -92,10 +96,10 @@ Matrix multiply(const Matrix matrix1, const Matrix matrix2)
//TODO: matrix_add initialisieren //TODO: matrix_add initialisieren
{ {
//buffer_add += matrix1[index][skalar]*matrix2[skalar][index]; //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; //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; buffer_add = 0;
} }