IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++Builder Discussion :

Déclaration et allocation d'un tableau de structures à 3 dimensions


Sujet :

C++Builder

  1. #1
    Membre régulier Avatar de bfespi69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2008
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2008
    Messages : 79
    Points : 72
    Points
    72
    Par défaut Déclaration et allocation d'un tableau de structures à 3 dimensions
    Bonjour à tous,

    Je cherche un petit coup de pouce pour utiliser ( déclarer et allouer dynamiquement ) un tableau de structures à 3 dimensions.

    ma structure :

    struct sDefautMat
    {
    double X;
    double Y;
    double Z;
    double Defaut;
    int Type;
    };

    Je cherche donc à obtenir un tableau de ce genre mais c'est là ou je coince car en dynamique je maîtrise pas bien.

    En temps normal j'aurais essayé "sDefautMat Matrice[5][8][4];" si je connais la taille mais ça n'est le cas qu'à l'exécution.

    Comment doit être la déclaration en dynamique dans Borland ?

    sDefautMat Matrice[][][]; ???
    sDefautMat ***Matrice; ???

    Comment doit être l'allocation en dynamique dans Borland ? Par des boucles ? du malloc ? ou du ZeroMemory ? ou autre ?

    Si quelqu'un peut m'éclairer, qu'il n'hésite pas !

    Merci.

    A bientot
    Je sais que je plais pas à tout le monde... Mais quand je vois à qui je plais pas, je m‘demande si ça me dérange vraiment.

  2. #2
    Membre expérimenté
    Avatar de sat83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2004
    Messages
    1 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 040
    Points : 1 307
    Points
    1 307
    Par défaut
    Je ne suis pas sûr de comprendre, mais pour déclarer et utiliser ta structure:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    sDefautMat myMat;
    //[...]
    myMat.X = 10;
    myMat.Y = 15;
    //[...]
    [EDIT:] Effectivement j'avais rien compris ^^ Il faut regarder du coté des allocations dynamiques
    Ce que l'on apprend par l'effort reste toujours ancré plus longtemps...

  3. #3
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2005
    Messages
    401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 401
    Points : 578
    Points
    578
    Par défaut
    Hello,

    Supposons que ce soit en C++, et pas en C...

    Un point de départ dans la faq...
    Une réponse plus complète...
    Ou une autre...

  4. #4
    Membre régulier Avatar de bfespi69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2008
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2008
    Messages : 79
    Points : 72
    Points
    72
    Par défaut
    Merci pour vos réponses.

    j'ai essayé quelquechose comme ça. Déjà ça compile.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
    //-------------------
    struct sDefautMat
    {
    double X;
    double Y;
    double Z;
    double Defaut;
    int Type;
    };
     
    //--------------------
    int taille1 = ...
    int taille2 = ...
    int taille3 = ...
     
    sDefautMat*** DefautMatrice;
     
    DefautMatrice = new sDefautMat**[taille1];
     
    for ( int i = 0 ; i < taille1 ; ++i )
    {
            DefautMatrice[i] = new sDefautMat*[taille2];
     
            for ( int j = 0 ; j < taille2; ++j )
            {
                DefautMatrice[i][j] = new sDefautMat[taille3];
     
                for ( int k = 0 ; k < taille3; ++k )
                {
                    // Initialisation à 0
                    DefautMatrice[i][j][k].X  = 0.;
                    DefautMatrice[i][j][k].Y  = 0.;
                    DefautMatrice[i][j][k].Z  = 0.;
                    DefautMatrice[i][j][k].Defaut  = 0.;
                    DefautMatrice[i][j][k].Type    = 0;
                }
            }
        }
    Pour la libération, il suffit de boucler de facon identique avec un delete ?

    Merci encore.
    Je sais que je plais pas à tout le monde... Mais quand je vois à qui je plais pas, je m‘demande si ça me dérange vraiment.

  5. #5
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 361
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 361
    Points : 20 379
    Points
    20 379
    Par défaut
    salut à ta place je ne me casserais pas la tête, je prendrais l'exemple donné en lien par Totoche76 et de cplusplus.com à savoir un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    vector<vector<vector<double> > > array3D;
    C'est un petit peu compliqué à utiliser mais après ça tourne tout seul.
    Dans un projet j'utilise une matrice 2d de cette sorte ça donne satisfaction

    Citation Envoyé par bfespi69 Voir le message

    Pour la libération, il suffit de boucler de facon identique avec un delete ?

    Merci encore.
    logiquement oui et 2 fois
    Si c'est un matrice 2d ça sera une fois

Discussions similaires

  1. Tableau de Structure à 3 Dimensions
    Par Rockye dans le forum Débuter
    Réponses: 3
    Dernier message: 03/01/2013, 16h31
  2. Allocation dynamique d'un tableau de structures
    Par ryadh.naouar dans le forum C
    Réponses: 5
    Dernier message: 24/04/2008, 12h49
  3. allocation d'un tableau dans une structure
    Par Klaine dans le forum Débuter
    Réponses: 3
    Dernier message: 02/04/2008, 23h51
  4. Déclaration d'un tableau de structures
    Par Spinoza23 dans le forum Débuter
    Réponses: 2
    Dernier message: 28/03/2008, 09h10
  5. Allocation dynamique tableau dans structure
    Par chental dans le forum C
    Réponses: 2
    Dernier message: 03/08/2006, 09h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo