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 :

Variable tableau - combien de colonne à mon tableau ?


Sujet :

C++

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    86
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 86
    Points : 26
    Points
    26
    Par défaut Variable tableau - combien de colonne à mon tableau ?
    Bonjour à tous, je voudrais commencer par une chose simple, je débute en c++ et je ne suis pas extrèmement à l'aise avec la syntaxe puisque je suis développeur vb 6 / vb.net .

    Voici donc les outils que j'utilise : MingW + CodeBlock.

    J'ai un projet d'application console qui utilise une variable tableau[] de string.

    Je voudrais pouvoir changer le nombre de colonne dynamiquement sans perdre les données (à chaque fois + 1), et aussi à la fin de ma boucle qui rajoute des éléments à l'intérieur pouvoir récupéré le nombre de colonne.

    j'ai fais un tour sur le net déjà, mais chaque fois c'est la bibliothèque char qui est charger, et c'est pas du string. est ce que quelqu'un pourrait m'aider ?

    Cordialement Enzo68290

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2010
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 12
    Points : 16
    Points
    16
    Par défaut
    bonjour,

    tout d'abord peut importe ce que tu stocke dans ton tableau, ça n'a pas d'importance,

    ensuite la taille d'un tableau est fixe ... (il y a des façons de contourner de problème bien entendu mais en général c'est plutôt lourd comme implémentation et "sale")

    je te conseille d'utiliser les vecteurs. c'est une classe c++ qui te permet justement d'avoir un semblant de tableau dynamique !

    tu vas voir ce n'est pas difficile a utiliser !


    d'abord tu inclus:
    #include <vector>
    using namespace std;


    ensuite pour créer ton tableau de string de taille vide ( non défini):
    vector<string> monTableau;
    sinon vector<string> monTableau(5) crée un tableau de taille 5.



    fonction utile pour ton problème:
    monTableau.push_back(9) ajoute UNE CASE a la fin de ton tableau avec la valeur 9 !!!!

    pour consulter ou modifier les cases de ton tableau la syntaxe est la meme que pour un tableau normal : cout << monTableau[9] << endl;
    (tu as cependant des fonction prédéfinis pour la première et la dernière case : monTableau.front(), monTableau.back() )

    monTableau.size() te donne la taille de ton tableau
    monTableau.empty() test si le tableau est vide
    monTableau.resize(6) redimentionne le tableau pour que sa taille soit 6
    etc ...

    je pense que les vecteurs sont vraiment l'outils le plus adéquat en ce qui concerne les tableaux dynamique !!

    allé bon courage !

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    86
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 86
    Points : 26
    Points
    26
    Par défaut vecteur
    ok pour les vecteurs, sa me convient pour la majorité de mon projet que je n'ai pas encore coder qui sont justement des tableau dynamique

    par contre j'ai déjà coder une grosse partie avec des tableaux de string, qui eux sont fixe, mais déclaré grâce à une variable qui donne le nombre d'éléments.

    J'utilise ces tableaux un peu partout, dans mes fonctions y compris, et même surtout.

    j'aurais bien besoin de savoir combien j'ai d'élément dans mon tableau.

    Au besoin j'aurais sinon la méthode qui consiste à transmettre à mes fonctions la variable qui me sert lors de la création du tableau qui dit que j'ai par exemple 12 élément de string, mais je ne trouve pas ça propre.

    Tu n'aurais pas un moyen de savoir combien d'éléments j'ai dans mes différents tableaux ?

    Si vraiment il n'y avait rien je changerais mes tableaux pour des vecteurs, mais j'aimerais m'éviter de tout recommencer

    Merci pour la rapidité à la quel tu m'as répondu, en tout cas les vecteurs sont puissant et une bonne chose à savoir.

  4. #4
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Points : 16 213
    Points
    16 213
    Par défaut
    Il n'y a pas moyen de récupérer la taille d'un tel tableau aisément dans tous les cas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    string tableau[13];
     
    int f(string toto[])
    {
      // Ici, aucun moyen de récupérer la valeur 13
    }
     
    f(tableau);
    Il y a des astuces qui permettent d'avoir cette taille dans certains cas (mais pas tous), mais elles ne sont clairement pas orientées débutant, et de plus elles demandent de changer la manière de déclarer la fonction, donc dans ce cas, autant utiliser des vector...
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2010
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 12
    Points : 16
    Points
    16
    Par défaut
    bonjour,

    je ne suis pas sure de comprendre si tu veux récupérer la TAILLE du tableau, ou le NOMBRE d'élément contenu dedans... donc :


    pour connaitre la taille de ton tableau :
    int nb_elements = sizeof(tableau) / sizeof(tableau[0]);

    sizeof en fait est une fonction qui te permet de connaitre le nombre d'octet utilisé par son paramètre. donc pour avoir la taille du tableau tu calcules la taille que fait ton tableau DE STRING, divisé par la taille d'un string !!!


    ensuite si jamais tu veux savoir le nombre d'élément contenu dans ton tableau,
    initialise ton tableau dès sa création avec un string par défaut ( par exemple : 'abcd').
    lorsque tu veux connaitre le nombre d'élément tu n'as qu'a parcourir ton tableau avec un while et incrémenter créer un compteur jusqu'a ce qu'il rencontre la chaine 'abcd' !!

    bon courage!

  6. #6
    Membre éprouvé Avatar de Steph_ng8
    Homme Profil pro
    Doctorant en Informatique
    Inscrit en
    Septembre 2010
    Messages
    677
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Doctorant en Informatique

    Informations forums :
    Inscription : Septembre 2010
    Messages : 677
    Points : 997
    Points
    997
    Par défaut
    Citation Envoyé par loutemilou Voir le message
    pour connaitre la taille de ton tableau :
    int nb_elements = sizeof(tableau) / sizeof(tableau[0]);
    Ceci fonctionne uniquement si le tableau a été alloué statiquement.
    Sinon, il est considéré comme un simple pointeur.
    Idem s'il est passé en paramètre d'une fonction.

    http://c.developpez.com/faq/?page=al...taille_allouee

  7. #7
    Membre expert
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    1 415
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 415
    Points : 3 156
    Points
    3 156
    Par défaut
    Salut

    sans vouloir te décourager, je pense que tu as tout intérêt à tout migrer vers un conteneur de la STL, le std::vector en est un, apparemment adapté à ton besoin.

    Le C++ est particulièrement sensible à la gestion de la mémoire (ce que tu ne devais pas faire en VB6), utiliser std::vector t'enlèveras déjà une part de ce travail !

    Bon courage pour la suite

    @loutemilou : il n'y a pas que les std::vector en matière de tableaux dynamiques dans la STL, bien que ce soit en effet le meilleur conseil dans notre cas
    Find me on github

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2010
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 12
    Points : 16
    Points
    16
    Par défaut
    ok logique

Discussions similaires

  1. Réponses: 1
    Dernier message: 14/07/2013, 15h50
  2. [phpToPDF] Intitulé de colonne de tableau sur deux lignes de tableau
    Par lodan dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 15/05/2013, 11h47
  3. javascript pour tableau à largeur de colonnes variables
    Par barkleyone dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 06/06/2006, 17h14
  4. Réponses: 9
    Dernier message: 12/05/2006, 09h06
  5. Réponses: 11
    Dernier message: 28/02/2005, 13h23

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