#include #include #include "matrix.h" // TODO Matrix-Funktionen implementieren Matrix createMatrix(unsigned int rows, unsigned int cols) { Matrix m = {NULL, rows, cols} //Wahrscheinlich in Programm bereits enthalten; if (rows > 0 && cols > 0) { m.buffer = (MatrixType *)calloc(rows * cols, sizeof(MatrixType)); if (m.buffer == NULL) { m.rows = 0; m.cols = 0; } } return m; } void clearMatrix(Matrix *matrix) { if (matrix != NULL) { free(matrix->buffer); matrix->buffer = NULL; matrix->rows = 0; matrix->cols = 0; } } void setMatrixAt(MatrixType value, Matrix matrix, unsigned int rowIdx, unsigned int colIdx) //not testet { if (rowIdx < matrix.rows && colIdx < matrix.cols && matrix.buffer != NULL) matrix.buffer[rowIdx * matrix.cols + colIdx] = value; } MatrixType getMatrixAt(const Matrix matrix, unsigned int rowIdx, unsigned int colIdx) { if (rowIdx >= matrix.rows || colIdx >= matrix.cols || matrix.buffer == NULL) return 0; // Sicherheitscheck return matrix.buffer[rowIdx * matrix.cols + colIdx]; } //TODO: Funktionen implementieren Matrix add(const Matrix matrix1, const Matrix matrix2) { //Needed: rows/Zeilen, collums/Spalten //test, if two matrix has exact size if(matrix1.rows != matrix2.rows || matrix1.cols != matrix2.cols) return -1; 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 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 //Probe ob Spalten1 = Zeilen2 if(matrix1.cols != matrix2.rows) return -1; result = createMatrix(matrix1.rows, matrix2.rows); // "" for(int index = 0; index < matrix1.rows; index++) { for(int shift = 0; shift < matrix2.cols; shift++) { for(int skalar = 0; skalar