#include <print>
#include "tspezn_01.h"

// main() Funktion
int main()
{
    // Rechteckige Matrix anlegen
    Matrix<short,3,4> rectMat;
    // Und mit Werten belegen
    try
    {
        for (auto r = 1; r <= 3; r++)
            for (auto c = 1; c <= 4; c++)
                rectMat.SetData(r, c, c * 10 + r);
    }
    catch (const std::exception& ex)
    {
        std::println("FEHLER: {}", ex.what());
        exit(1);
    }
    // Matrix ausgeben
    std::println("Ausgangsmatrix:");
    rectMat.Print();
    // Matrix transponieren und ausgeben
    std::println("Transponierte Matrix:");
    rectMat.Transpose();
    rectMat.Print();

    // Quadratische Matrix anlegen
    Matrix<double,4,4> sqrMat;
    // Und mit Werten belegen
    try
    {
        for (auto r = 1; r <= 4; r++)
            for (auto c = 1; c <= 4; c++)
                sqrMat.SetData(r, c, double(r * 100 + c) / 10.0);
    }
    catch (const std::exception& ex)
    {
        std::println("FEHLER: {}", ex.what());
        exit(1);
    }
    // Matrix ausgeben
    std::println("\nAusgangsmatrix:");
    sqrMat.Print();
    // Matrix transponieren und ausgeben
    std::println("Transponierte Matrix:");
    sqrMat.Transpose();
    sqrMat.Print();
}
