Suche guten Lösungsweg...



  • Servus Folks,

    also derzeit versuche ich mich bei einer analytischen Zusammenfassung.

    ( 0, 0, 0) = +0.25 ( 0, 1, 0) = +0.25 ( 1, 0, 0) = +0.25 ( 1, 1, 0) = +0.25
    ( 0, 0, 0) = +0.25 ( 0, 1, 0) = +0.25 ( 1, 0, 0) = -0.25 ( 1, 1, 0) = -0.25
    ( 0, 0, 0) = +0.25 ( 0, 1, 0) = -0.25 ( 1, 0, 0) = +0.25 ( 1, 1, 0) = -0.25
    ( 0, 0, 0) = +0.25 ( 0, 1, 0) = -0.25 ( 1, 0, 0) = -0.25 ( 1, 1, 0) = +0.25

    obige Liste ist ein Beispiel, die eine Komponente entspricht einer dreidimensionalen Koordinate und der Andere halt den ihm zugehörigen Wert. Was ich nun erreichen möchte, ist eine Vereinfachung der Liste. Wie man am obigen Beispiel erkennt, werden alle Komponenten (außer der (0,0,0)) zu Null. D.h. ich möchte in der Vereinfachung alle gleichen Koordinaten zusammenfassen und ablegen. Dabei variiert die Länge der Liste und kann teilweise auch bis zu 1000 Elemente umfassen. (Bitte in Ansi C)

    Welchen Lösungsweg würdet Ihr vorschlagen ?

    Gruß Winn



  • mal sehen ob ich es verstanden habe 🙂

    (0,0,0) (0, 1, 0) sind die koordinaten. richtig ?

    alle koordinaten sind in einer riesigen liste. ok.

    jetzt möchtest du alle koordinaten gleichen wertes(types) verändern. richtig ?

    mein vorschalg wäre ne vierte "koordinate" einbauen die die koordinate indendifiziert.

    bsp:
    (0, 0, 0, 0) letzter wert steht für koordintentyp 0
    (1, 0, 0, 1) letzter wert steht für koordintentyp 1

    könnte (wird es auch) probleme mit der berrechnung geben.



  • Hey Miller,

    hmm, gefällt mir... Deine Idee ist also jedem Element (Koordinate) einen Typflag zugeben und anschließend zu summieren. Ich glaube ich werde dazu einen "Schon-berechnet-Flag" hinzu nehmen. So dürfte es zumindest einigermaßen schnell und unkompliziert gehen. Sieht also derzeit so aus:

    typedef struct
        {
            int type;
            int used;
    
            int x,y,z;
            double value;
        } Summand;
    

    Noch Ideen ?

    Danke schonmal 🙂 Winn

    EDIT: Den Typflag hab ich nun entfernt, ging auch so...


Anmelden zum Antworten