C++ :: Aufgabe #354 :: Lösung #1

1 Lösung Lösung öffentlich
#354

Prüfen auf Toeplitz-Matrix

Fortgeschrittener - C++ von JKooP - 16.04.2021 um 17:07 Uhr
Von einer Toeplitz-Matrix spricht man, wenn alle Diagonalen von links oben nach rechts unten die gleichen Zahlen enthalten.

Beispiel 1:
matrix = { {4, 5, 6, 7, 8}, {3, 4, 5, 6, 7 }, {2, 3, 4, 5, 6}, {1, 2, 3, 4, 5} }
Lösung: wahr, denn alle Diagonalen enthalten die gleichen Zahlen =>
{1}, {2, 2}, {3, 3, 3}, {4, 4, 4, 4}, {5, 5, 5, 5}, {6, 6, 6}, {7, 7}, {8}

Beispiel 2:
matrix = { {1, 2}, {2, 2} }
Lösung: falsch, denn die zweite Diagonale enthält unterschiedliche Zahlen =>
{1}, {1, 2}, {2}

Erstelle eine Methode/Funktion, die jede Matrix größer 2x2 dahingehend prüft, ob es sich um eine Toeplitz-Matrix handelt.

Viel Spaß
#1
vote_ok
von JKooP (18090 Punkte) - 24.05.2021 um 21:54 Uhr
C++ 17
Quellcode ausblenden C-Code
#include <iostream>
#include <vector>
using namespace std;

template<typename T>
bool is_toeplitz_matrix(const vector<vector<T>>& m) {
    auto i{ 0 }, k{ 1 };
        
    while (k < m[0].size() - 1) {
        vector<T> c, n;

        for (size_t x = 0; x < m[i].size()-1; x++)
            c.push_back(m[i][x]); i++;
        
        for (size_t y = 1; y < m[k].size(); y++)
            n.push_back(m[k][y]); k++;

        if (c != n) return false;
    }
    return true;
}

int main()
{
    vector<vector<int>>m { { 4, 5, 6, 7, 8 }, { 3, 4, 5, 6, 7 }, { 2, 3, 4, 5, 6 }, { 1, 2, 3, 4, 5 } };
    cout << "Toeplitz-Matrix: " << (is_toeplitz_matrix(m) ? "wahr" : "falsch") << "\n";
}

Kommentare:

Für diese Lösung gibt es noch keinen Kommentar

Bitte melden Sie sich an um eine Kommentar zu schreiben.
Kommentar schreiben
1826738

Du scheinst einen AdBlocker zu nutzen. Ich würde mich freuen, wenn du ihn auf dieser Seite deaktivierst und dich davon überzeugst, dass die Werbung hier nicht störend ist.