From 0081e8f89e804b5b0f2943e860ade50a3d285439 Mon Sep 17 00:00:00 2001 From: Kristin Date: Tue, 18 Nov 2025 10:11:38 +0100 Subject: [PATCH] data in buffer --- matrix.c | 25 +++++++++++++++++-------- matrix.h | 2 +- 2 files changed, 18 insertions(+), 9 deletions(-) diff --git a/matrix.c b/matrix.c index 6cd833e..3049010 100644 --- a/matrix.c +++ b/matrix.c @@ -5,31 +5,40 @@ /*typedef struct { unsigned int rows; //Zeilen unsigned int cols; //Spalten - MatrixType *data; //Zeiger auf Speicherbereich Reihen*Spalten + MatrixType *buffer; //Zeiger auf Speicherbereich Reihen*Spalten } Matrix;*/ Matrix createMatrix(unsigned int rows, unsigned int cols) { - MatrixType *data = + MatrixType *buffer = malloc(rows * cols * sizeof(MatrixType)); // Speicher reservieren, malloc // liefert Zeiger auf Speicher - Matrix newMatrix = {rows, cols, data}; // neue Matrix nach struct + Matrix newMatrix = {rows, cols, buffer}; // neue Matrix nach struct return newMatrix; } void clearMatrix(Matrix *matrix) { - matrix->data = UNDEFINED_MATRIX_VALUE; + matrix->buffer = UNDEFINED_MATRIX_VALUE; matrix->rows = UNDEFINED_MATRIX_VALUE; matrix->cols = UNDEFINED_MATRIX_VALUE; - free((*matrix).data); // Speicher freigeben + free((*matrix).buffer); // Speicher freigeben } void setMatrixAt(MatrixType value, Matrix matrix, unsigned int rowIdx, // Kopie der Matrix wird übergeben unsigned int colIdx) { - matrix.data[rowIdx * matrix.cols + colIdx] = + + matrix.buffer[rowIdx * matrix.cols + colIdx] = value; // rowIdx * matrix.cols -> Beginn der Zeile colIdx ->Spalte // innerhalb der Zeile } -MatrixType getMatrixAt(const Matrix matrix, unsigned int rowIdx, +MatrixType getMatrixAt(const Matrix matrix, + unsigned int rowIdx, // Kopie der Matrix wird übergeben unsigned int colIdx) { - return 0; + if (rowIdx >= matrix.rows || + colIdx >= matrix.cols) { // Speichergröße nicht überschreiten + return 0; + } + + MatrixType value = matrix.buffer[rowIdx * matrix.cols + colIdx]; + + return value; } Matrix add(const Matrix matrix1, const Matrix matrix2) { // broadcasting diff --git a/matrix.h b/matrix.h index 1d37962..ca871ae 100644 --- a/matrix.h +++ b/matrix.h @@ -9,7 +9,7 @@ typedef float MatrixType; typedef struct { unsigned int rows; unsigned int cols; - MatrixType *data; + MatrixType *buffer; } Matrix;