Mehrdimensionales Array mit 2 unbekannten Dimensionsgrößen an Funktion übergeben?



  • Hi, ich möchte ein zweidimensionales Array an eine Funktion übergeben, die Anzahl der Zeilen und der Spalten wird jedoch erst zur laufzeit eingegeben.
    Die Funktion soll später das Array einfach ausgeben. Hier mein Code:

    #include <iostream>
    
    using namespace std;
    
    int main()
    {
        int zeile, spalte;
    
        cout << "Geben sie die Anzahl der Zeilen an: ";
        cin >> zeile;
        cout << "Geben sie die Anzahl der Spalten an: ";
        cin >> spalte;
    
        int array[zeile][spalte];
        for(int i = 0; i < zeile; i++)
        {
            for(int j = 0; j < spalte; j++)
            {
                cout << "Geben sie den Wert fuer Zeile " << i << " und Spalte " << j << " ein!" << endl;
                cin >> array[i][j];
            }
        //Hier soll die Funktion dann aufgerufen werden
        }
        return 0;
    }
    

    Falls das irgendwie möglich ist, würde ich mich sehr freuen wenn mir jemand möglichst simpel erläutert, wie ich das bewerkstelligen kann. Ich habe gelesen, dass die 2. Dimension immer angegeben sein muss. Kann man das irgendwie umgehen?

    Schonmal danke im voraus. :schland:



  • Würde mich wundern wenn du das Compilieren kannst:

    int array[zeile][spalte];
    

    du musst eigtl generell immer das array klar definiert haben zur Laufzeit, einzige Weg das zu umgehen wär das Array auf dem heap anzulegen, stichwort dynamisch.
    hierda

    die Übergabe ließe sich generell nur über einen Pointer machen.



  • Benutz am besten std::vector , welcher genau für solche Sachen geeignet ist.

    Umgehen würdest du das mit dynamischer Allokation von Speicher (was auch von der genannten Objekt benutzt wird), was mit new/delete geht, aber das kommt in deinem Buch (oder Tutorial) ein wenig später.

    Für den Anfang ist es das beste, wenn du dich mit dem obigen beschäftigst und in Kauf nimmst, dass du es nicht 100% verstehst, wie es funktioniert, dafür lernst du wie man es wirklich macht, wenn man so etwas braucht. (Auf der Seite hat es sehr viele Beispiele, welche sich allerdings hinter den Funtkionen verstecken).


Log in to reply