/**********************************************************************\ * Kurzbeschreibung: * "Funktionstest" - Matrizen mit Werten erzeugen * und alle implementierten Funktionen aus matrixOp.c zum Test aufrufen * * Datum: Autor: * * \**********************************************************************/ /*--- #includes ------------------------------------------------------*/ #define _CRT_SECURE_NO_WARNINGS //VC++: keine scanf() Warnungen #include #include #include #include "matrixOp.h" /*--- #defines -------------------------------------------------------*/ /*--- Lokale Datentypen (typedef) ------------------------------------*/ /*--- Modulglobale static Variablen ----------------------------------*/ /*--- Prototypen lokaler Funktionen ----------------------------------*/ /*--- Funktionsdefinitionen ------------------------------------------*/ /*--- main -----------------------------------------------------------*/ int main(void) { unsigned int zeilen, spalten; float startWert; printf("Test verschiedener Funktionen der Bibliothek\n"); printf("Gewuenschte Matrizen-Groesse eingeben\n"); printf(" Zeilen, Spalten (> 0; z.B. 3,4): "); scanf("%u,%u", &zeilen, &spalten); Matrix a = createMatrix(spalten, zeilen); printf("Matrix Elemente eingeben (F. Test nur 1.Elem., weitere Elemente werden mit +1 erzeugt)\n"); printf(" Element in [1,1] (z.B.: 4.5): "); scanf("%f", &startWert); float wert = startWert; for (unsigned int y = 0; y < zeilen; y++) { for (unsigned int x = 0; x < spalten; x++) { setEntryAt(a, x, y, wert); wert += 1.0f; } } printf("\nTest Create Zero und Rand:\n"); Matrix zero = createMatrixZero(spalten, zeilen); printf("CreateMatrixZero: a[%d,%d]=\n", spalten, zeilen); printMatrix(zero); printf("\nInfo: Called srand!\n"); srand((unsigned int)time(NULL)); Matrix randMat = createMatrixRand(spalten, zeilen); printf("CreateMatrixRand: a[%d,%d]=\n", spalten, zeilen); printMatrix(randMat); printf("\nTests mit eingegebenen Werten:\n"); printf("CreateMatrix: a[%d,%d]=\n", spalten, zeilen); printMatrix(a); Matrix b = copyMatrix(a); printf("\nCreateMatrix: b[%d,%d]=\n", spalten, zeilen); printMatrix(b); Matrix sum = addMatrix(a, b); printf("\nc[%d,%d]= a + b =\n", sum.spalten, sum.zeilen); printMatrix(sum); Matrix diff = subMatrix(a, b); printf("\nc[%d,%d]= a - b =\n", diff.spalten, diff.zeilen); printMatrix(diff); Matrix bT = transposeMatrix(b); printf("\nc[%d,%d]= b^T\n", bT.spalten, bT.zeilen); printMatrix(bT); Matrix c = multMatrix(a, bT); // a * b^T printf("a * b^T = c\n"); // Nur die obere linke 2x2-Matrix drucken printf("{\n"); for (int y = 0; y < 2; y++) { printf(" "); for (int x = 0; x < 2; x++) { printf("%6.2f", getEntryAt(c, x, y)); if (x < 1) printf(" "); } printf("\n"); } printf("}\n"); printf("\ndet(c) = %.2f\n", determMatrix(c)); // Speicher freigeben destroyMatrix(&a); destroyMatrix(&b); destroyMatrix(&sum); destroyMatrix(&diff); destroyMatrix(&zero); destroyMatrix(&randMat); destroyMatrix(&bT); destroyMatrix(&c); return 0; }