diff --git a/matrix.c b/matrix.c index d1c4bd1..b0c4786 100644 --- a/matrix.c +++ b/matrix.c @@ -6,36 +6,49 @@ Matrix createMatrix(unsigned int rows, unsigned int cols) { + if(rows <= 0 || cols <= 0){ + Matrix matrix = { 0 , 0 , UNDEFINED_MATRIX_VALUE }; + return matrix; + } + Matrix matrix = { rows , cols }; - matrix.matrixptr = malloc((sizeof(MatrixType)*rows*cols)); + matrix.buffer = malloc((sizeof(MatrixType)*rows*cols)); return matrix; } void clearMatrix(Matrix *matrix) { - free(*matrix); + free(matrix->buffer); + + matrix->buffer = NULL; + matrix->rows = 0; + matrix->cols = 0; } void setMatrixAt(MatrixType value, Matrix matrix, unsigned int rowIdx, unsigned int colIdx) { - *(matrix.matrixptr+(rowIdx*colIdx)) = value; + *(matrix.buffer + (rowIdx * matrix.cols + colIdx)) = value; + } MatrixType getMatrixAt(const Matrix matrix, unsigned int rowIdx, unsigned int colIdx) { + if(matrix.rows <= rowIdx || matrix.cols <= colIdx) + return UNDEFINED_MATRIX_VALUE; + MatrixType value; - matrix[rowIdx][colIdx] = value; + value = *(matrix.buffer + (rowIdx * matrix.cols + colIdx)); return value; } Matrix add(const Matrix matrix1, const Matrix matrix2) { - + return matrix1; } Matrix multiply(const Matrix matrix1, const Matrix matrix2) { - + return matrix1; } \ No newline at end of file diff --git a/matrix.h b/matrix.h index 41ae1dd..49c981d 100644 --- a/matrix.h +++ b/matrix.h @@ -8,7 +8,7 @@ typedef float MatrixType; typedef struct{ unsigned int rows; unsigned int cols; - int *martix_ptr; + MatrixType *buffer; }Matrix; // TODO Matrixtyp definieren