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 :

tableau dynamique cin>>tableau.push_back()


Sujet :

C++

  1. #1
    Membre actif
    Homme Profil pro
    sans emploi
    Inscrit en
    Novembre 2016
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : sans emploi

    Informations forums :
    Inscription : Novembre 2016
    Messages : 12
    Par défaut tableau dynamique cin>>tableau.push_back()
    Bonjour,

    Je viens de commancer à apprendre le c++ avec le livre du zero (ancien nom) de Monsieur NEBRA et SCHALLER

    Au niveau du chapitre sur les tableau dynamique j'ai voulu creer un petit programme qui prend la forme suivante :

    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
    #include <iostream>
    #include <vector>
     
    using namespace std;
     
    int main()
    {
        vector<double> tableauNoteUserDynamique(0);
        char yesNoUserNeed();
     
        do
        {
            cout << "Veuillez entrer votre note : " << endl;
            cin >> tableauNoteUserDynamique.push_back();
            cout << "Avez vous d'autres note a enregistrer yes(y) no (n)" << endl;
            cin >> yesNoUserNeed;
     
        } while (yesNoUserNeed == y);
     
        return 0;
    }
    l'objectif est de permettre à un utilisateur de rentre autant de note qu'il veuille.
    Je suis rentrer dans un boulce do while peut être mal écrite avec l’égalité mais l'erreur vient
    de la ligne
    cin>>tableauNoteUserDynamique.push_back();
    D:\c++\madbox\fonction\tableau\moyenneTabUserDynamique\main.cpp|14|error: no matching function for call to 'std::vector<double>::push_back()'|
    Voila si quelqu'un pouvais éclairer ma lanterne merci d'avance.
    Veuillez excuser mon orthographe et surtout les grossièretés que je peux écrire en C++
    Cordialement madbox

  2. #2
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2009
    Messages
    4 493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 493
    Billets dans le blog
    1
    Par défaut
    Tu utilises effectivement la méthode std::vector<double>::push_back(). Qu'essayes-tu de mettre dans le vecteur ? Quelle valeur ? Regarde bien ton code, ce qu'il fait, pas ce que tu penses qu'il fait.

    Concentre-toi sur cette ligne et trouve ce qui ne va pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cin >> tableauNoteUserDynamique.push_back();
    PS : Il y a d'autres problèmes dans ton code mais commençons par régler celui-là

  3. #3
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    Pour t'aider, tu peux regarder une description de vector, telle que: la classe vector sur cppreference.com.

  4. #4
    Membre actif
    Homme Profil pro
    sans emploi
    Inscrit en
    Novembre 2016
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : sans emploi

    Informations forums :
    Inscription : Novembre 2016
    Messages : 12
    Par défaut idee
    apres relecture du code je me dit que je devrais le développer comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    do 
       {
            double userNote();
            cout << "Veuillez entrer votre note : " << endl;
            cin >> userNote();
            tableauNoteUserDynamique.push_back(userNote);
            cout << "Avez vous d'autres note a enregistrer yes(y) no (n)" << endl;
            cin >> yesNoUserNeed;
     
        } while (yesNoUserNeed == y);
    J'ai surement voulu prendre un raccourci illogique même si dans mon esprit nébuleux cela paraissait possible.
    Je vais tenter de compiler ça se soir pour tester.
    Et oui je pense que le while est totalement faux mais l'idée y est je ferai quelques recherche et reviendrai vers vous si nécessaire.
    Merci et à bientôt sur le poste.

  5. #5
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    Il y a du mieux dans l'idée générale: passer par une variable intermédiaire.
    Par contre, ton compilateur va hurler, et je te laisse lire sa diatribe.

    Au passage, tu devrais regarder ce qu'est le "most vexing parse", c'est l'une de tes erreurs.

  6. #6
    Membre actif
    Homme Profil pro
    sans emploi
    Inscrit en
    Novembre 2016
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : sans emploi

    Informations forums :
    Inscription : Novembre 2016
    Messages : 12
    Par défaut reécriture de code
    Voila le code refait et qui fonctionne dans la version basique

    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
    #include <iostream>
    #include <vector>
    using namespace std;
     
    double moyenneTabDynamique(vector<double>tableau)
    {
        double moyenne;
        for (int i(0);i<tableau.size;i++)
        {
            moyenne+=tableau[i];
        }
        moyenne/=tableau.size;
        return moyenne;
    }
     
    int main()
    {
     
        vector<double>tableauNoteUserDynamique;
        char userChoice;
        do
        {
            cout<<"Veuillez entrer votre note : "<<endl;
            double noteUser(0);
            cin>>noteUser;
            tableauNoteUserDynamique.push_back(noteUser);
            cout<<"Avez vous d'autres note a enregistrer yes(y) no (n)"<<endl;
            cin>>userChoice;
        }while(userChoice=='y');
        moyenneTabDynamique(tableauNoteUserDynamique);
        return 0;
    }
    l'ont m'as vivement conseiller de changer la varibale userYesNo par useChoice plus lisible.
    une histoire de à mettre un peu partout que je n'ai pas encore comprise et assimiler.
    ce code si fonctionne mais si je tente de mettre la fonction dans un cpp et un .h j'ai des soucis.
    Mais je vais soumettre se problème différent dans une nouvelle discusion

  7. #7
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2009
    Messages
    4 493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 493
    Billets dans le blog
    1
    Par défaut
    Cette histoire de std:: c'est le principe des namespace : http://cpp.developpez.com/faq/cpp/?page=Les-namespaces

    C'est effectivement un meilleur nommage : c'est le choix de l'utilisateur. Ce n'est pas une indication pour dire si on a besoin d'un choix de l'utilisateur.

    De la même manière, tu appelles ta variable 'tableau', pourtant ce n'est pas un tableau : c'est un vecteur !!!

  8. #8
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    Mieux encore, ce sont des notes, autant choisir ce nom.
    Il vaut mieux nommer une variable par son utilité que par son type. C'est à dire privilégier le fond à la forme.

  9. #9
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2009
    Messages
    4 493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 493
    Billets dans le blog
    1
    Par défaut
    C'est particulièrement juste pour un type aussi générique que vector !

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 19/03/2015, 18h31
  2. Réponses: 2
    Dernier message: 11/01/2010, 12h39
  3. AFFICHER UN TABLEAU DYNAMIQUE
    Par ghassenus dans le forum Langage
    Réponses: 2
    Dernier message: 28/12/2002, 14h19
  4. [Kylix] tableau dynamique
    Par sdoura2 dans le forum EDI
    Réponses: 1
    Dernier message: 31/10/2002, 08h57
  5. Réponses: 4
    Dernier message: 13/05/2002, 16h43

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