#include #include #include "matrix.h" // TODO Matrix-Funktionen implementieren (done) //Matrix Zeilen und Spaltenanzahl festlegen Matrix createMatrix(unsigned int rows, unsigned int cols) { Matrix matrix; matrix.rows = rows; matrix.cols = cols; clearMatrix(&matrix); return matrix; } //Matrix Speicher leeren void clearMatrix(Matrix *matrix) { for (int i=0; i < (*matrix).rows; i++) { for (int j = 0; j < (*matrix).cols; j++) { (*matrix).array[j][i] = 0; } } } //Matrix Werte setzen void setMatrixAt(MatrixType value, Matrix matrix, unsigned int rowIdx, unsigned int colIdx) { if (rowIdx < 28 && colIdx < 28) { matrix.array[rowIdx][colIdx] = value; } } //Matrix Werte auslesen MatrixType getMatrixAt(const Matrix matrix, unsigned int rowIdx, unsigned int colIdx) { if (rowIdx < 28 && colIdx < 28) { return matrix.array[rowIdx][colIdx]; } return 0; } //Matrizen addieren Matrix add(const Matrix matrix1, const Matrix matrix2) { Matrix result = createMatrix(matrix1.rows, matrix1.cols); if ((matrix1.rows != matrix2.rows) || (matrix1.cols != matrix2.cols)) //Überprüfung der Addierbarkeit zweier Matrizen { return result; } for (int i = 0; i < matrix1.rows; i++) { for (int j = 0; j < matrix1.cols; j++) { result.array[i][j] = matrix1.array[i][j] + matrix2.array[i][j]; } } return result; } //Matrizen multiplizieren Matrix multiply(const Matrix matrix1, const Matrix matrix2) { Matrix result = createMatrix(matrix1.rows, matrix2.cols); if (matrix1.cols != matrix2.rows) //Überprüfung der Multiplizierbarkeit zweier Matrizen { return result; } for (int i = 0; i < matrix1.rows; i++) { for (int j = 0; j < matrix2.cols; j++) { for (int k = 0; k < matrix1.cols; k++) { result.array[i][j] += (matrix1.array[i][k] * matrix2.array[k][j]); } } } return result; }