Arryas Umsortieren ???



  • Hallo leute

    Ich möchte die einzer (1) im (bTabelle1) schrittweise verschieben.

    So das die einzer (1) am anfang des Arry wieder erscheinen

    bool bTabelle1 [12] = {0,0,0,0,0,1,0,0,0,1,0,1};
    bool bNoteName2 [12] = {0,0,0,0,0,0,0,0,0,0,0,0};

    bTabelle1 um 1 verschoben
    bool bNoteName2 [12] = {1,0,0,0,0,0,1,0,0,0,1,0};

    bTabelle1 um 3 verschoben

    bool bNoteName2 [12] = {1,0,1,0,0,0,0,0,1,0,0,0};

    wie mache ich so was am besten?

    Grüße Can



  • mit std::sort



  • @kingruedi: Hast Du den Beitrag auch gelesen?
    Er will das Teil rotieren, nicht sortieren.
    Der Algorithmus ist also rotate.

    Beispiel:

    #include <algorithm>
    const int SIZE=12;
    bool bTabelle1 [SIZE] = {0,0,0,0,0,1,0,0,0,1,0,1}; 
    
    //          Anfang     neuer Anfang: letztes Element     Ende
    std::rotate(bTabelle1,    bTabelle+SIZE-1,            bTabelle+SIZE);
    

    MfG Jester



  • Nicht eher std::rotate? So wie ich das verstehe, wäre Verschieben um n Elemente nach rechts:

    #include <algorithm>
    ...
    std::rotate(bTabelle, bTabelle + 12 - n, bTabelle + 12);
    


  • @op void: :p



  • soweit ich verstanden habe, möchtest du die elemente rotieren (so, dass ein einser am anfang steht) und in ein neues array kopieren, ohne das erste zu verändern.

    #include <algorithm>
    //...
    const int size = 12;
    bool Tabl[size] = /*...*/
    bool End[size];
    
    int rotieren = 3;
    
    std::rotate_copy (Tabl,Tabl+size-3,Tabl+size, End);
    

    rotate erwartet:

    1. iterator auf das erste element
    2. iterator auf das element, das nach dem rotieren an erster stelle stehen soll
    3. iterator auf das letzte element
      rotate_copy erwartet zusätzlich
    4. output iterator auf das erste element, in das geschrieben werden soll.

    //edit:
    na bitte, essen+schreiben = langsam *lol* 🙂



  • Jester schrieb:

    @kingruedi: Hast Du den Beitrag auch gelesen?

    das dachte ich 🙂 naja, hatte verstanden er wollte das so sortieren, das alle 1 am Anfang stehen 🙂



  • Danke an alle für die Antworten!!!

    Danke Davie genau deinem code habe ich gebraucht mit dem copy,

    Ich möchte ein Akkord-Erkennung programmiren.

    ich habe mir gedacht ich deffiniere erst Alle Akkord Typen in C-note.

    const bool C_Dim [size]= {1,0,0,1,0,1,0,0,0,0,0,0};
    const bool C_Sus2 [size]= {1,1,0,0,0,0,1,0,0,0,0,0};
    const bool C_Moll [size]= {1,0,1,0,0,0,1,0,0,0,0,0};
    const bool C_Dur [size]= {1,0,0,1,0,0,1,0,0,0,0,0};
    const bool C_Sus4 [size]= {1,0,0,0,1,0,1,0,0,0,0,0}; usw.

    wenn ich jetz 3 Tasten Am Kayboard Tastatur Drücke werden die
    Nullen in der Tabel[size] eine eins (1).

    So Jetz möchte ich prüfen ob die grade gedrückten 3 Tasten in irgend
    einer GrundTon art existieren. oder nicht existieren !! und mir den Namen des GrundTons und den AkkodNamem anzeigen !!

    ich will so lange rotieren und sortiren saltieren bis es klappt 🙂

    Bin kein programmirer.

    ich weiss auch nicht ob das der richtige weg ist ich habe mir gedacht so müsste es funktioniren.

    weiss da jemand eine bessere lösung??


Anmelden zum Antworten