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 :

[en cours] nommé des variable a la suite (var1, var2, var3, ..)


Sujet :

C++

  1. #1
    Membre averti
    Inscrit en
    Février 2005
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 24
    Par défaut nommé des variable a la suite (var1, var2, var3, ..)
    Bonjour,
    je ne sais aps trop comment exposer mon probleme mais je vais essayer d'etre le plu claire possible.
    En gros, je demande a l'utilisateur du logiciel combien de nombre il souhaite rentrer et puis je lui demande de les saisir. Maisla est mon probleme, je voudrais nommé ses valeurs: val1, val2, val3, ..., valx où x et le nombre valeur qu'il a donné au depart.
    Je pensais a une boucle for du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for(int i=0; i<x; i++){
    int val i;
    cin>>val i;
    mais je ne sais pas comment faire pour que le i qui suit val prenne en fait la valeur donné dans la boucle for et donné ainsi val1, val2...

    Est-ce que quelcu'un pourrais m'aider a mettre en place ce code ou bien m'expliquer une autre facon de le faire?
    Merci d'avance.

  2. #2
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par défaut
    Pourquoi pas un tableau?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2005
    Messages : 117
    Par défaut
    oui, il suffit de faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for(int i=0;i<x;i++)
    {
    int var[x];
    cin>>var[i];
    }

  4. #4
    Membre averti
    Inscrit en
    Avril 2006
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 25
    Par défaut
    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
    40
    41
    42
    43
    44
    45
    46
    47
    #include <iostream>
    #include <vector>
    #include <string>
    #include <sstream>
     
    using namespace std;
     
    main()
     
    {
     
     
        int nbval;
        string chaine = "val";
        vector<string> myvar;
        int uval;
        vector<int> userval;
     
        cout << "Entrez le nombre de valeurs :";
        cin >> nbval;
     
        for (int k=1 ; k<=nbval ; k++) {
     
            cin >> uval;
            userval.push_back(uval);
     
        }
     
        //construire un vecteur contenant les vali
        for (int i=0 ; i<nbval ; i++) {
     
            ostringstream oss;
            oss << chaine << userval[i];
            myvar.push_back(oss.str());
            oss.clear();
     
        }
     
        //myvar contient maintenant var1, var2 jusqu'a varnbval
        for (vector<string>::iterator j = myvar.begin() ; j!=myvar.end() ;j++) {
     
         cout << *j << endl;
     
        }
     
     
    }

  5. #5
    Membre chevronné Avatar de Rafy
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    415
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 415
    Par défaut
    dadagos, il est impossible de faire ceci en C++, je ne pense même pas que ce soit faisable avec d'autre langages.
    Comme l'a dit seriousme, utilise des tableaux, même mieux encore, des std::vector<>, ou autre conteneur.
    Si tu décide d'utiliser std::vector<> :

    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
     
    #include <iostream>    // std::cin, std::cout
    #incude <vector>       // std::vector
     
    int main(void)
    {
            std::cout << "Combien de valeurs ? " << std::endl;
            size_t NombreDeValeurs;
            std::cin >> NombreDeValeurs;
            std::vector<int> Vector;              // On créé le vector
            Vector.resize(NombreDeValeurs);   // On le dimensionne
            std::cout << "Entrez vos valeurs :" << std::endl;
            for (size_t i = 0; i < NombreDeValeurs; ++i)
            {
                    std::cout << "Valeur " << i << " : ";
                    std::cin >> Vector[i];
            }
            // Et voila tu as maintenant dans ton vector toutes tes valeurs...
            return 0;
    }
    Ca ça pourra t'aider : http://c.developpez.com/faq/cpp/?pag...hoix_conteneur

  6. #6
    Membre averti
    Inscrit en
    Avril 2006
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 25
    Par défaut
    Ne veux tu pas stocker dans un tableau : valx ou x est une valeur parmi celles rentrées par l'utilisateur ?

  7. #7
    Membre averti
    Inscrit en
    Février 2005
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 24
    Par défaut
    Excusez moi mais je debute et meme si c'est non recommander de faire ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for(int i=0;i<x;i++)
    {
    int var[i];
    cin>>var[i];
    }
    Je prefere ce code car au moin je le comprend et je peux le manipuler par rapport aux autres.
    Merci beaucoup a tout le monde.

  8. #8
    Membre chevronné Avatar de Rafy
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    415
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 415
    Par défaut
    Ah toi de voir, N'oublie pas le tag résolut si tu penses que ton post est arrivé à ce que tu voulais.

  9. #9
    Membre averti
    Inscrit en
    Février 2005
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 24
    Par défaut
    j'ai essayer de faires qulque chose avec ce code mais sans résultat:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    int nbvaleurs;
        cout<<"rentrz le nombre de valeurs différentes.";
        cin>>nbvaleurs;
        for(int i=0; i<nbvaleurs; i++){
                int * pval[i] = new int;
               int * peffect[i] = new int;
                cout<<"/nrentrez une valeur";
                cin>>*pval[i];
                cout<<"/nrentrez son effectif"<<endl;
                cin>>*peffect[i];
                }
        for(int i=0; i<nbvaleurs; i++){
                cout<<*pval[i]<<*peffect[i]<<endl;
                }
    En gros ca me met 2 erreurs pour chacun de mes pointeur (pval et peffect):
    -- variable-sized object 'pval' may not be initialized
    -- 'pval' undeclared
    j'ai mi en couleur les lignes correspondants aux erreurs.
    Si quelqu'un pouvais m'aider...
    Je suppose que cela vient des pointeurs, c'est la premiere fois que je les utilise et pour la meme raison je ne voit pas vraiment mon erreur.

  10. #10
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int * pval = new int[i];
    et il faut enlever les "*" devant "pval" dans le reste du code.

  11. #11
    Membre averti
    Inscrit en
    Février 2005
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 24
    Par défaut
    ca a avancé.
    Apres avoir les modifications dites je n'ai plus que le message:
    -- 'pval' undeclared.

    Mais peux tu me dire pourquoi il faut enlever le "*" apres cin>> car dans le livre que j'ai acheter il ne l'enleve pas pour affecter la valeur au pointeur:
    Merci

  12. #12
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par défaut
    Mais peux tu me dire pourquoi il faut enlever le "*" apres cin>>
    car:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int * pval = new int[i];
    fait de "pval" un pointeur sur un tableau de "i" "int".
    C'est équivalent à:
    si le tableau était statique.
    Donc pour accéder à un élément du tableau on fait:

  13. #13
    Membre averti
    Inscrit en
    Février 2005
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 24
    Par défaut
    ok, je croit que j'ai compri.
    Mais alors d'un vient l'erreur?

  14. #14
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par défaut
    Citation Envoyé par dadagos
    Mais alors d'un vient l'erreur?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int * pval[i] = new int;
    plusieures erreurs:
    -"new int" retourne un pointeur sur un seul "int" alors qu'il faut un tableau de plusieurs "int".
    -"int * pval[i]" est un tableau de pointeurs sur "int", pas un pointeur sur "int".

  15. #15
    Membre averti
    Inscrit en
    Février 2005
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 24
    Par défaut
    Mais j'ai fais les modifications que tu m'a dit plus haut.
    Code :
    int * pval = new int[i]

    et il faut enlever les "*" devant "pval" dans le reste du code.
    Mais ca me met toujours la deuxième erreur soit:
    -- 'pval' undeclared.

  16. #16
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Je te conseille de regarder la FAQ C++ aussi.

  17. #17
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par défaut
    Mais j'ai fais les modifications que tu m'a dit plus haut.
    Oui, ces remarques ne concernent que l'ancien code, pas celui qui ne comporte plus que la dernière erreur.
    D'ailleurs à quelle ligne est cette erreur?

  18. #18
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par défaut
    OK je voie: "pval" est déclaré dans un bloc "for(...){...}" et donc il n'est valide que entre les accolades "'{}" de la boucle "for".
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    int * pval = new int[i];
    for(int i=0; i<nbvaleurs; i++){
    devrait régler le problème.


  19. #19
    Membre émérite
    Avatar de Interruption13h
    Inscrit en
    Août 2005
    Messages
    603
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 603
    Par défaut
    Salut !

    Citation Envoyé par seriousme
    OK je voie: "pval" est déclaré dans un bloc "for(...){...}" et donc il n'est valide que entre les accolades "'{}" de la boucle "for".
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    int * pval = new int[i];
    for(int i=0; i<nbvaleurs; i++){
    devrait régler le problème.


    Une petite correction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    int * pval = new int[nbvaleurs];
    for(int i=0; i<nbvaleurs; i++)
                {
                 //Saisie de la (ieme+1) valeur
                }
    Bonne continuation !

  20. #20
    Membre averti
    Inscrit en
    Février 2005
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 24
    Par défaut
    merci.
    J'essaye des que je rentre chez moi et je vous tien au courant.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 13
    Dernier message: 27/10/2009, 20h24
  2. Réponses: 5
    Dernier message: 30/06/2009, 23h21
  3. Réponses: 3
    Dernier message: 23/07/2007, 18h01
  4. Comment créer des variables nommées A1, A2, A3... An
    Par BLACKDOM dans le forum MATLAB
    Réponses: 6
    Dernier message: 16/04/2007, 17h19
  5. Stocker des variable suite a un fork
    Par gool42 dans le forum Programmation et administration système
    Réponses: 1
    Dernier message: 07/01/2007, 19h46

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