tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
7
ZUGRIFFE
900
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Yupa Yupa ist offline Rookie
    Registriert seit
    Mar 2004
    Beiträge
    8
    Hallo,

    ich möchte ein mehrdimensionales Array erstellen, leider sind bisher alle meine Versuche gescheitert.
    Die folgenden Varianten habe ich schon probiert:

    double *cameraMatrix;
    ...
    cameraMatrix = new double[3][3];

    und

    double *cameraMatrix;
    ...
    cameraMatrix = new double[3];
    for(i=0;i<3;i++)
    cameraMatrix[i] = new double[3];

    usw.

    Vielleicht kann einer von euch mir bei diesem Problem helfen.

    Besten Dank im vorraus.

    MfG Andre
     

  2. #2
    Registriert seit
    Jul 2003
    Ort
    Duisburg (NRW)
    Beiträge
    1.788
    Versuch mal das:
    Code :
    1
    
    double *cameraMatrix  = new double[3*3];
    So werden die neun nötigen Doubles reserviert. Du kannst aber trotz dieser Form der Allozierung mit beispielsweise cameraMatrix[2][2] das mittlere Element ansprechen.

    Übrigens, beim Freigeben delete[] verwenden (die Array-Form) und nicht delete . Macht zwar bei double keinen Unterschied, kann aber gefährlich werden bei komplexeren Datentypen.
    Geändert von Kachelator (24.04.04 um 17:30 Uhr)
     
    Chor: "Wir sind der Chor, und wir stimmen zu. Wir stimmen zu, wir stimmen zu, wir stimmen zu."

  3. #3
    Yupa Yupa ist offline Rookie
    Registriert seit
    Mar 2004
    Beiträge
    8
    Erstmal danke für deine Antwort.
    Zwar scheint das allokieren jetzt zu funktionieren, aber mit dem Zugriff habe ich Probleme.
    Ich fülle meine Array folgendermaßen:

    cameraMatrix[0][0] = fc[0];
    cameraMatrix[0][1] = 0.00;
    cameraMatrix[0][2] = 0.00;
    ...

    und bekommen diese Fehlermeldung :

    invalid types `double[int]' for array subscript

    ,für jede oben angeführte Zeile.

    MfG Andre
     

  4. #4
    Registriert seit
    Jul 2003
    Ort
    Duisburg (NRW)
    Beiträge
    1.788
    Ups, da hast du recht - da habe ich nicht aufgepasst.

    Probiere das mal so:
    Code :
    1
    
    double **cameraMatrix  = (double**)(new double[3*3]);
     
    Chor: "Wir sind der Chor, und wir stimmen zu. Wir stimmen zu, wir stimmen zu, wir stimmen zu."

  5. #5
    Yupa Yupa ist offline Rookie
    Registriert seit
    Mar 2004
    Beiträge
    8
    Sorry, aber ich hätte noch eine Frage.
    Gibt es etwas bei den Index zu beachten? Ich kann zwar jetzt das Array füllen mit

    cameraMatrix[0][0] = fc[0];
    cameraMatrix[0][1] = 0.00;
    cameraMatrix[0][2] = 0.00;

    cameraMatrix[1][0] = fc[0]*alph_c;
    cameraMatrix[1][1] = fc[1];
    cameraMatrix[1][2] = 0.00;

    cameraMatrix[2][0] = cc[0];
    cameraMatrix[2][1] = cc[1];
    cameraMatrix[2][2] = 1.00;

    ,aber bei der Ausgabe dieser Werte sind

    cameraMatrix[0][0] = fc[0];
    ...
    und

    cameraMatrix[1][0] = fc[0]*alph_c;
    ...

    jeweils identisch, d. h. Ersteres nimmt den Wert der zweite Zeile an.

    Der einzige Trost , der letzte Block bleibt mir dabei erhalten, so wie ich in haben wollte.

    Gruß Andre
     

  6. #6
    Registriert seit
    Jul 2003
    Ort
    Duisburg (NRW)
    Beiträge
    1.788
    Das muss an den Werten liegen, die du da reintust. Sonst kann ich mir keinen Grund vorstellen.
     
    Chor: "Wir sind der Chor, und wir stimmen zu. Wir stimmen zu, wir stimmen zu, wir stimmen zu."

  7. #7
    Yupa Yupa ist offline Rookie
    Registriert seit
    Mar 2004
    Beiträge
    8
    Ich habe es hin bekommen.
    Den Speicher allokiere ich nun aber so:

    int i;
    cameraMatrix = new double *[3];
    for(i=0;i<3;i++){
    cameraMatrix[i] = new double[3];
    }

    und fülle das Array wie ob angegeben.
    Ich glaube das es sich anbietet einen neuen Type einzuführen, myMatrix, oder so. Da ich wahrscheinlich im Code öfters Matrizen brauche.
    Also, noch mal vielen Danke.

    Gruß Andre
     

  8. #8
    Registriert seit
    Jul 2003
    Ort
    Duisburg (NRW)
    Beiträge
    1.788
    Da du ja mit C++ arbeitest, könntest du auch mal std::vector oder noch besser (für mehrdimensionale) boost::multiarray. Das bekommst du bei www.boost.org. Ist aber nicht ganz einfach, dazu den Zugang zu finden. Will sagen: Es ist ein bisschen knifflig.
     
    Chor: "Wir sind der Chor, und wir stimmen zu. Wir stimmen zu, wir stimmen zu, wir stimmen zu."

Ähnliche Themen

  1. Problem mit Mehrdimensionalem Array
    Von xtramen01 im Forum PHP
    Antworten: 4
    Letzter Beitrag: 23.07.10, 15:31
  2. Antworten: 8
    Letzter Beitrag: 22.06.10, 17:20
  3. array_intersect mit mehrdimensionalem Array
    Von jaegerschnitzel im Forum PHP
    Antworten: 5
    Letzter Beitrag: 20.06.08, 09:39
  4. Antworten: 1
    Letzter Beitrag: 20.02.06, 11:44
  5. Problem mit mehrdimensionalem Array
    Von timäää im Forum Flash Plattform
    Antworten: 8
    Letzter Beitrag: 15.08.05, 13:57