Variable Aufteilung von Objekten



  • Hallo Zusammen,

    prinzipiell geht es darum, jede Möglichkeit zu erzeugen, eine beliebige Anzahl von Objekten auf eine beliebige Anzahl von "Stapeln"(Arrays) zu verteilen.
    Da ich es schwierig finde das Problem zu beschreiben versuche ich es mal anhand eines Beispiels zu erläutern:

    Ich habe ein Array

    aStartArray[10]
    

    in der Beispielsweise 10 Objekte einer Klasse gespeichert sind. Nun will ich alle Möglichkeiten durchgehen 3 von diesen auf jeweils 1 Stapel, bzw in ein neues Array zu legen

    aEndArray[3][1]
    

    . Wenn, wie in diesem Beispiel, 3 Objekte auf 3 Stapel gelegt werden soll, würde ich es mit 3 for-Schleifen machen:

    int size = sizeof( aStartArray) / sizeof( aStartArray[0] )
    for (int c = 0; c < size ; c++)
    {
        for (int d = 0; d < size ; d++)
        {
             for (int e = 0; e < size; e++)
             {
                  aEndArray[0] = aStartArray[c];
                  aEndArray[1] = aStartArray[d];
                  aEndArray[2] = aStartArray[e];
                  MachIrgendwasMitDemEndArray(aEndArray);
             }
        }
    }
    

    Das Problem ist, dass ich es nicht hinbekommen, wenn es eben nicht genau 2/3/4 Objekte sind, die auf 2/3/4 Stapel gelegt werden solle sondern es beliebig viele(Variable) sind:

    int ObjekteDieAufStapelGelegtWerdenSollen = x;
    
    //...
    

    Ich kann ja nicht in mein Programm x-viele for-Schleifen einbauen, da ich ja im vorhinein nicht weiß, wie viele x sind. Das wird zur Laufzeit vom Benutzer bestimmt.

    Mit Bitte um Hilfe
    MfG Tim



  • Bei einer dynamischen Array-Größe wirst du dein Array auf dem Heap anlegen
    müssen.

    Unter den FAQs findest du einen Beitrag "dynamische mehrdimensionale Arrays"
    http://www.c-plusplus.net/forum/39489

    Gruß,
    XSpille



  • Warum ist dein aEndArray zweidimensional?
    So wie ich dich verstanden habe, wäre std::next_permutation etwas für dich.



  • XSpille schrieb:

    Bei einer dynamischen Array-Größe wirst du dein Array auf dem Heap anlegen
    müssen.

    Das ist mir klar. Der Code oben soll auch nur verdeutlichen, wie ich es meine. Mir geht es mehr darum, einen Weg zu finden, Alle Möglichkeiten zu haben x-Objekte aus meinen Anfangsobjekten auf x-Arrays zu verteilen.

    unverständlich schrieb:

    Warum ist dein aEndArray zweidimensional?
    So wie ich dich verstanden habe, wäre std::next_permutation etwas für dich.

    Das Array ist mehrdimensional, weil in diesem Array, eben die x-Verschiedene Stapel gespeichert werden. Stapel 1: aEndArray[1], Stapel 2: aEndArray[2] Stapel x: aEndArray[x]

    next_permutation schau ich mir gleich mal an.


Anmelden zum Antworten