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++ Discussion :

Problème tableaux dynamiques


Sujet :

C++

  1. #1
    Membre averti Avatar de Vince
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    369
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 369
    Points : 366
    Points
    366
    Par défaut Problème tableaux dynamiques
    Bonjour,

    J'ai un problème pour coder un tableau dynamique, voici un résumé de mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    en global : 
    AnsiString ** gTabstrSymbol;
     
    dans une fonction :
    gTabstrSymbol = new AnsiString* [1,1];
    (...)
          dans une boucle :
         *gTabstrSymbol = new AnsiString [iCptChar,iTabIndex];
          gTabstrSymbol[iCptChar][iTabIndex] = strTmp;
    Je veux agrandir mon tableau de 1 à chaque fois que j'ajoute un élément...

    J'ai trouvé ça : http://cpp.developpez.com/faq/cpp/?p..._new_array_dim mais je ne m'en sort pas avec...


    Merci d'avance de vos réponses !

  2. #2
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017
    Par défaut
    Bonjour,
    Il faut bien comprendre les types de variables que tu manipules :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    AnsiString ** gTabstrSymbol;
    C'est un pointeur de pointeur sur AnsiString.
    Donc pour allouer ton tableau de tableau, c'est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    gTabstrSymbol = new AnsiString *[10];
    gTabstrSymbol est maintenant un tableau de 10 pointeur sur AnsiString.
    Il faut allouer maintenant chacun des éléments du tableau :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    gTabstrSymbol[i] = new AnsiString[Taillei];
    Chaque gTabstrSymbol[i] est un tableau sur Taillei éléments de type AnsiString.

    Ensuite, pour les libérer, il faut utiliser delete[] :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    delete []gTabstrSymbol[i]; // pour chaque i de 0 à 10
    // et 
    delete []gTabstrSymbol; // pour le tableau de tableau
    Une fois celà dit, je rajouterais :
    1/ Les variables globales : c'est dangereux à utiliser. L'expérience montre que c'est une source fréquente de bug et un problème de maintenance ;
    2/ Eviter d'utiliser les allocations dynamiques : préférer les conteneurs type std::vector. Ici aussi, l'expérience montre que c'est une source fréquente de bug.

  3. #3
    Membre averti Avatar de Vince
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    369
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 369
    Points : 366
    Points
    366
    Par défaut
    Merci de ta réponse !

    je ne comprends pas dans :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gTabstrSymbol[i] = new AnsiString[Taillei];
    à quoi correspond le i de gTabstrSymbol[i] ?

    Mon code passe à la compilation mais l'exécution rien ne se passe, aucune erreur renvoyée...

  4. #4
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017
    Par défaut
    Le i c'est à faire varier pour selon le nombre de tableaux que tu veux (dans mon exemple de 0 à 9); et taillei c'est la taille de chacun des sous-tableaux que tu souhaites allouer.

    Qu'il ne se passe rien à l'exécution, là, je ne peux pas t'aider. Je ne sais pas ce que tu fais de ces tableaux...

  5. #5
    Membre chevronné
    Avatar de Goten
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 580
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 580
    Points : 2 205
    Points
    2 205
    Par défaut
    C'est à utiliser dans une boucle for... où i serait la variable incrémentée.

    edit : grillé
    "Hardcoded types are to generic code what magic constants are to regular code." --A. Alexandrescu

  6. #6
    Membre averti Avatar de Vince
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    369
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 369
    Points : 366
    Points
    366
    Par défaut
    Merci de vos réponses
    Citation Envoyé par 3DArchi Voir le message
    Le i c'est à faire varier pour selon le nombre de tableaux que tu veux (dans mon exemple de 0 à 9); et taillei c'est la taille de chacun des sous-tableaux que tu souhaites allouer.

    Qu'il ne se passe rien à l'exécution, là, je ne peux pas t'aider. Je ne sais pas ce que tu fais de ces tableaux...
    En fait je ne cherche à faire qu'un tableau à 2 dimensions dont la taille varie.
    Mon code ne passe toujours pas en exécution

  7. #7
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017
    Par défaut
    Citation Envoyé par Vince Voir le message
    Merci de vos réponses
    En fait je ne cherche à faire qu'un tableau à 2 dimensions dont la taille varie.
    Mon code ne passe toujours pas en exécution
    Peux-tu montrer le bout de code qui te pose des soucis?

Discussions similaires

  1. problème des tableaux dynamiques (tas)
    Par oussaki dans le forum C
    Réponses: 7
    Dernier message: 26/12/2011, 12h25
  2. Problème de redimensionnement, tableaux dynamiques
    Par marco_fot_hxc dans le forum VBScript
    Réponses: 9
    Dernier message: 07/05/2008, 10h52
  3. Réponses: 6
    Dernier message: 20/02/2007, 18h00
  4. Problème avec tableaux dynamiques et procédure
    Par K20 dans le forum Langage
    Réponses: 11
    Dernier message: 06/01/2006, 21h51
  5. [D2005]Problème de tableaux dynamique
    Par Laurent Dardenne dans le forum Delphi .NET
    Réponses: 8
    Dernier message: 26/07/2005, 12h56

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