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

Langage C++ Discussion :

nom de variable dynamique


Sujet :

Langage C++

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 90
    Par défaut nom de variable dynamique
    Bonjour,
    je voudrais creer des variables qui changent de nom au fur et à mesure que mon "n" change
    par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    for (N=1; N<=5; N++)
    {
    /*c'est ici que je veux que la VaribleN change et sera donc Variable1, Variable2 ...selon la valeur de N*/
      VariableN=une valeur ;
    }
    je ne sais pas dutout comment faire

    can you help me pleeease

  2. #2
    Membre Expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2007
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 895
    Par défaut
    Citation Envoyé par pitichamo Voir le message
    Bonjour,
    je voudrais creer des variables qui changent de nom au fur et à mesure que mon "n" change
    par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    for (N=1; N<=5; N++)
    {
    /*c'est ici que je veux que la VaribleN change et sera donc Variable1, Variable2 ...selon la valeur de N*/
      VariableN=une valeur ;
    }
    je ne sais pas dutout comment faire

    can you help me pleeease
    Tu crée un tableau. Le nom d'une variable ne survit pas à la compilation, il est donc impossible qu'il soit dynamique.
    [FAQ des forums][FAQ Développement 2D, 3D et Jeux][Si vous ne savez pas ou vous en êtes...]
    Essayez d'écrire clairement (c'est à dire avec des mots français complets). SMS est votre ennemi.
    Evitez les arguments inutiles - DirectMachin vs. OpenTruc ou G++ vs. Café. C'est dépassé tout ça.
    Et si vous êtes sages, vous aurez peut être vous aussi la chance de passer à la télé. Ou pas.

    Ce site contient un forum d'entraide gratuit. Il ne s'use que si l'on ne s'en sert pas.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 90
    Par défaut
    j'ai trouvé une reponse en cherchant dans les forum mais je ne sais pas trop comment l'utiliser pour creer des ......piles !!
    voila se que ça dit:
    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
     
    map<string, double> lengthMap;
     
    double longueur(string const &variable)
    {
      return lenghtMap[variable];
    }
     
    int main()
    {
      lenghtMap["P"] = 12;
      lenghtMap["S"] = 42;
      cout << longueur("P");
     
    }
    sinon voila le lien c'est toujours mieux :
    http://www.developpez.net/forums/d24...ble-dynamique/

  4. #4
    Membre Expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2007
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 895
    Par défaut
    Pour une pile, tu n'as pas besoin de "variable dynamique". Tu as besoin de std::stack<>, qui est dans le header <stack>.

    Cf. http://www.cplusplus.com/reference/stl/stack/

    Tu as le push, le pop et c'est largement suffisant
    [FAQ des forums][FAQ Développement 2D, 3D et Jeux][Si vous ne savez pas ou vous en êtes...]
    Essayez d'écrire clairement (c'est à dire avec des mots français complets). SMS est votre ennemi.
    Evitez les arguments inutiles - DirectMachin vs. OpenTruc ou G++ vs. Café. C'est dépassé tout ça.
    Et si vous êtes sages, vous aurez peut être vous aussi la chance de passer à la télé. Ou pas.

    Ce site contient un forum d'entraide gratuit. Il ne s'use que si l'on ne s'en sert pas.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 90
    Par défaut
    oui c'est suffisant si j'ai besoin juste de changer les elements de la pile .. mais moi se dont j'ai besoin c'est de creer une nouvelle pile a chaque fois en fonction de mon N

    donc par exemple stack <float> PileX(N);
    C'est un peut tordu je le reconnais mais c'est se qu'il me faut

  6. #6
    Membre Expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2007
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 895
    Par défaut
    Et bien dans ce cas, tu fais un vecteur de piles

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    std::vector<std::stack<float> > piles; // note l'espace entre > et >
     
    pile.push_back(std::stack<float>()); // ajout d'une nouvelle pile à la fin
    std::stack<float>& s = pile[n]; // n < piles.size() ; attention, s est une référence !
    Ce n'est pas génial, mais c'est un bon début.

    Si tu explicitais mieux ta problématique, je pense qu'on pourrais trouver une solution tout à fait correcte.
    [FAQ des forums][FAQ Développement 2D, 3D et Jeux][Si vous ne savez pas ou vous en êtes...]
    Essayez d'écrire clairement (c'est à dire avec des mots français complets). SMS est votre ennemi.
    Evitez les arguments inutiles - DirectMachin vs. OpenTruc ou G++ vs. Café. C'est dépassé tout ça.
    Et si vous êtes sages, vous aurez peut être vous aussi la chance de passer à la télé. Ou pas.

    Ce site contient un forum d'entraide gratuit. Il ne s'use que si l'on ne s'en sert pas.

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 90
    Par défaut
    j'ai honte mais j'ai pas compris

    donc c'est un vecteur de pile c'est ça ??le nom va changer selon le n ??
    pourquoi tu as mis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    pile.push_back(std::stack<float>());
    j'ai pas compris si tu as oublié le s de piles ou c fait expret

  8. #8
    Membre Expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2007
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 895
    Par défaut
    J'ai oublié le s - pas fait exprès.

    On ne peut pas changer le nom d'une variable. Mais au lieu d'accéder à une variable inexistante variableX, on accède à un tableau existant (car std::vector<>, ce n'est rien d'autre qu'un tableau un peu amélioré) sous la forme variable[X].

    push_back() permet de "créer" une nouvelle "variable" ; piles[n] (ou n est l'indice basé sur 0 de cette nouvelle variable (piles.size() - 1 pour la dernière ajoutée) permet d'accéder à cette "nouvelle variable".

    Lit un peu de documentation sur les tableaux, puis sur std::vector<>. Ca ne pourra pas te faire de mal
    [FAQ des forums][FAQ Développement 2D, 3D et Jeux][Si vous ne savez pas ou vous en êtes...]
    Essayez d'écrire clairement (c'est à dire avec des mots français complets). SMS est votre ennemi.
    Evitez les arguments inutiles - DirectMachin vs. OpenTruc ou G++ vs. Café. C'est dépassé tout ça.
    Et si vous êtes sages, vous aurez peut être vous aussi la chance de passer à la télé. Ou pas.

    Ce site contient un forum d'entraide gratuit. Il ne s'use que si l'on ne s'en sert pas.

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 90
    Par défaut
    pour commencer Merci pour ton aide

    apres avoir revue les vecteurs voila se que j'ai compris

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    std::vector<std::stack<float> > piles; // je cree un vecteur qui contiendra des piles 
     
    piles.push_back(std::stack<float>()); // a la fin  du vecteur ajouter un dernier element
    std::stack<float>& s = piles[n]; //  J'aurai n elements de type piles qui s’appelleront pile[n] de 1 à n
    est ce que c'est ça ?

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 90
    Par défaut
    voila j'ai suivi le code mais ....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    //je declare 
    vector<stack<float> > piles; 
     
     //je mets ça dans le main 
    piles.push_back(stack<float>());
     
    // et ça apres avoir demander le n a l'utilisateur et qu'il saisi une valeur ...
    stack<float>& s = piles[n];


    mais ça marche pour piles[0] je peux faire faire piles[0].push(1); par exemple mais si je fais piles[1].push(1); ça bug

  11. #11
    Membre Expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2007
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 895
    Par défaut
    Citation Envoyé par pitichamo Voir le message
    voila j'ai suivi le code mais ....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    //je declare 
    vector<stack<float> > piles; 
     
     //je mets ça dans le main 
    piles.push_back(stack<float>());
     
    // et ça apres avoir demander le n a l'utilisateur et qu'il saisi une valeur ...
    stack<float>& s = piles[n];


    mais ça marche pour piles[0] je peux faire faire piles[0].push(1); par exemple mais si je fais piles[1].push(1); ça bug
    Les piles sont numérotée de 0 à piles.size() - 1 - donc dans ton cas, puisque tu ne fait qu'un seul push_back(), tu n'a qu'une pile à ta disposition, à l'index 0. Accéder à la pile 1 va nécessairement provoquer un plantage.

    Sinon, le principe est bon.
    [FAQ des forums][FAQ Développement 2D, 3D et Jeux][Si vous ne savez pas ou vous en êtes...]
    Essayez d'écrire clairement (c'est à dire avec des mots français complets). SMS est votre ennemi.
    Evitez les arguments inutiles - DirectMachin vs. OpenTruc ou G++ vs. Café. C'est dépassé tout ça.
    Et si vous êtes sages, vous aurez peut être vous aussi la chance de passer à la télé. Ou pas.

    Ce site contient un forum d'entraide gratuit. Il ne s'use que si l'on ne s'en sert pas.

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 90
    Par défaut
    WAAAAW ça marche !!!!!
    vraiment merci

    je poste la solution pour ceux qui risquent d'en avoir besoin:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    //la declaration est toujours la meme
    vector<stack<float> > piles; 
     
     //je mets ça dans le main oui mais il faut remplir le vecteur avec autant d'element qu'on a besoin
     for(i=0; i<n;i++)
    {
        piles.push_back(stack<float>());
    }
    //et ici puisque le nombre d'element commence à 0 donc il faut n-1 
    stack<float>& s = piles[n-1];
    voilaaaaaaa c'est super

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [JSTL] nom de variable "dynamique"
    Par gmonta31 dans le forum Servlets/JSP
    Réponses: 6
    Dernier message: 04/05/2006, 13h31
  2. Nom de variable dynamique
    Par mavina dans le forum Linux
    Réponses: 7
    Dernier message: 26/04/2006, 20h48
  3. Réponses: 4
    Dernier message: 13/09/2005, 11h50
  4. Noms de Variables dynamiques
    Par horec dans le forum Langage
    Réponses: 7
    Dernier message: 22/07/2005, 16h47
  5. [SQL SERVER 2000] Noms de variables dynamiques
    Par cassoulet dans le forum MS SQL Server
    Réponses: 9
    Dernier message: 08/09/2004, 11h44

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