From 82c335ca893cbfe7aaecc5b4512b2b8be89423bf Mon Sep 17 00:00:00 2001 From: = Date: Tue, 25 Nov 2025 15:01:21 +0100 Subject: [PATCH] Fixed UnitTest Errorrs in matrix.c --- matrix.c | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/matrix.c b/matrix.c index 3552da8..ba4b374 100644 --- a/matrix.c +++ b/matrix.c @@ -75,25 +75,30 @@ void clearMatrix(Matrix *matrix) { for (int i = 0; i < matrix->rows; i++) { for (int j = 0; j < matrix->cols;j++) { - matrix->buffer[i + matrix->rows* j] = UNDEFINED_MATRIX_VALUE; + matrix->buffer[i + matrix->rows * j] = UNDEFINED_MATRIX_VALUE; } } free(matrix->buffer); matrix->rows = 0; matrix->cols = 0; - + matrix->buffer = NULL; } void setMatrixAt(MatrixType value, Matrix matrix, unsigned int rowIdx, unsigned int colIdx) { - matrix.buffer[rowIdx-1 + matrix.rows*(colIdx-1)] = value; + //checks, if the given incies are allowed + if((rowIdx) < matrix.rows && (colIdx) < matrix.cols) matrix.buffer[rowIdx + matrix.rows*(colIdx)] = value; } MatrixType getMatrixAt(const Matrix matrix, unsigned int rowIdx, unsigned int colIdx) { - MatrixType returnVal; - returnVal = matrix.buffer[rowIdx-1 + matrix.rows*(colIdx-1)]; - return returnVal; + //checks, if the given indices are allowed + if((rowIdx) < matrix.rows && (colIdx) < matrix.cols) { + MatrixType returnVal; + returnVal = matrix.buffer[rowIdx + matrix.rows*(colIdx)]; + return returnVal; + } + else return 0; } Matrix add(const Matrix matrix1, const Matrix matrix2) @@ -101,7 +106,8 @@ Matrix add(const Matrix matrix1, const Matrix matrix2) //check if the matrices are able to be added (same size) if (matrix1.cols == matrix2.cols && matrix1.rows == matrix2.rows){ //size of the matrices should be the same, if the addition is supposed to happen - Matrix outputMatrix = createMatrix(matrix1.rows, matrix1.cols); + // Matrix outputMatrix = createMatrix(matrix1.rows, matrix1.cols); + Matrix outputMatrix = createMatrix(matrix1.cols, matrix1.rows); for (int i = 0; i < matrix1.rows;i++) { for (int j = 0; j < matrix1.cols; j++) { // how this should work in normal Matrix version: @@ -125,13 +131,14 @@ Matrix multiply(const Matrix matrix1, const Matrix matrix2) { //check, if the matrices can be multiplied if (matrix1.rows == matrix2.cols) { - Matrix outputMatrix = createMatrix(matrix1.rows, matrix2.cols); + // Matrix outputMatrix = createMatrix(matrix1.rows, matrix2.cols); + Matrix outputMatrix = createMatrix(matrix2.cols, matrix1.rows); for(int i = 0; i < matrix1.rows; i++) { for (int j = 0; j < matrix2.cols; j++) { for (int k = 0; k < matrix2.rows; k++) { // how this should work in normal Matrix version: // outputMatrix.buffer[i][j] = matrix1.buffer[i][k] * matrix2.buffer[k][j]; - outputMatrix.buffer[i + outputMatrix.rows* j] = matrix1.buffer[i + matrix1.rows* k] * matrix2.buffer[k + matrix2.rows*j]; + outputMatrix.buffer[i + outputMatrix.rows * j] = matrix1.buffer[i + matrix1.rows * k] * matrix2.buffer[k + matrix2.rows * j]; } } }