Mehrdimensionale Array



  • Hallo!

    Ich stehe derzeit ein bisschen auf der Leitung!Ich hoffe mir kann wer weiterhelfen.

    Ich habe folgendes dreidimensionales Array:

    unsigned char [8][2][2];
    

    Und zwar möchte ich zuerst bei den ersten [8] 1 bis 8 reinschreiben und dann bei den [2][2] befinden sich immer zwei Punkte [2]-> x [2]->y Wert also auf [0] [0] ist der erste Punkt und auf [1][1] ist der zweite aber wie kann ich das machen?

    mfg



  • Hallo

    Was willst du denn machen?

    Mfg.
    way



  • Ich will eigentlich nur wissen wie ich auf die einzelnen Plätze des Array zugreifen kann?

    Also auf den acht Plätzen [8] stehen Bezeichenungen
    Und [2][2] stehen jeweils Anfangs und Endpunkte.



  • _coder schrieb:

    Und zwar möchte ich zuerst bei den ersten [8] 1 bis 8 reinschreiben und dann bei den [2][2] befinden sich immer zwei Punkte [2]-> x [2]->y Wert also auf [0] [0] ist der erste Punkt und auf [1][1] ist der zweite aber wie kann ich das machen?

    Hast du denn eine richtige Vorstellung von einem dreidimensionalem Array? Das ist wie eine Art dreidimensionale Tabelle, mit total 8*2*2 = 32 Einträgen.

    _coder schrieb:

    Also auf den acht Plätzen [8] stehen Bezeichenungen
    Und [2][2] stehen jeweils Anfangs und Endpunkte.

    Nein. Auf die ersten 8 Plätze kannst du nicht ohne weiteres zugreifen, zumindest nicht, um dort "Bezeichnungen" (was immer das sein mögen) rein zu schreiben. Sie referenzieren nur die Unterarrays. Eigentlich ist dein char[8][2][2] das selbe wie ein char[32] , mit dem Unterschied, dass der Compiler dir die Berechnung des Offsets für mehrere Dimensionen abnimmt.

    Wo liegt denn das Problem beim Zugriff?

    Array[7][1][0] = 'x';
    

    Allerdings gibt es bestimmt bessere Möglichkeiten. Sagen wir, du willst 8 Punkte speichern:

    struct Punkt
    {
        int x;
        int y;
    };
    
    Punkt Anfangspunkte[8];
    Punkt Endpunkte[8];
    
    Anfangspunkte[0].x = 241;
    Anfangspunkte[0].y = 361;
    

    Noch besser wären Container, aber ich hab das Gefühl, deren Einsatz würde dich hier überfordern.


  • Administrator

    unsigned char arr[8][2][2];
    
    arr[0][0][0] = 0;
    arr[0][0][1] = 1;
    arr[0][1][0] = 2;
    arr[0][1][1] = 3;
    arr[1][0][0] = 4;
    // usw.
    arr[7][1][1] = ~0; // weiter gehts nimmer...
    

    Du kannst auch mit Variablen zu greifen, also:

    int s = 3;
    int x = 0;
    int y = 1;
    
    arr[p][x][y] = 20;
    

    Aber das sind absolute Grundlagen. Wenn du dies wirklich nicht wusstest, solltest du dir vielleicht zuerst ein C++ Buch durchlesen.

    Grüssli


Anmelden zum Antworten