madhack
Messages postés24Date d'inscriptionlundi 28 novembre 2016StatutMembreDernière intervention27 avril 2017
-
Modifié par cptpingu le 29/11/2016 à 10:29
madhack
Messages postés24Date d'inscriptionlundi 28 novembre 2016StatutMembreDernière intervention27 avril 2017
-
29 nov. 2016 à 22:42
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 tableaux dynamiques, j'ai voulu créer un petit programme qui prend la forme suivante :
#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 le veuille.
Je suis rentré dans une boucle 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++
Tout d'abord, merci de penser aux balises de codes et de faire attention à l'orthographe. Je t'ai corrigé tout cela dans ton message (mais ça sera à toi de le faire à l'avenir).
Ne pas confondre variable (exemple: int a) et fonction (exemple int a()).
Ne pas confondre variable (exemple toto) et chaîne de caractères (exemple: "toto"). toto est une variable, "toto" est une chaîne de caractères. Enfin, un simple caractère est sous la forme 'x'. Exemple: 'y', 'n', 'a', 'b', etc...
std::cin permet de lire une et une seule variable. Donc tu ne peux pas lui "donner" une fonction d'ajout d'éléments dans un tableau.
Les noms de variables ne sont pas super bien choisis. Il faut plutôt attribuer des noms en rapport avec la fonction ou la description d'une variable plutôt que de donner les valeurs qu'une variable peut prendre directement dans son nom. Exemple: yesNoUserNeed => bof. userChoice => mieux.
Je ne vais pas t'embrouiller avec cela pour l'instant, mais un std::cin doit se "protéger". Exemple: si on te demandes un nombre et que tu entres, "toto", ton programme va faire n'importe quoi. Pour l'instant, ignore ce problème. Il faut juste que tu en sois conscient, et tu verras plus tard comment résoudre ça (ce n'est pas primordial).
Est-ce que tu ne serais pas en train de brûler les étapes ? J'ai l'impression que tu ne maîtrises pas encore les types de variables, l'utilisation de variables et les boucles, et tu essaies déjà d'utiliser des tableaux...
Voici la bonne version du code:
#include <iostream>
#include <vector>
int main()
{
std::vector<double> grades;
char userChoice;
do
{
double value = 0;
std::cout << "Veuillez entrer votre note: ";
std::cin >> value;
grades.push_back(value);
std::cout << "Avez-vous d'autres note à enregistrer ? yes(y)/no(n)" << std::endl;
std::cin >> userChoice;
}
while (userChoice == 'y');
return 0;
}
Le bouquin que tu utilises est correct pour ton niveau, mais il n'est pas terrible pour certaines mauvaises pratiques (notamment vis-à-vis du using namespace dégueux déclaré partout). Tu peux le conserver, mais en ayant à l'esprit qu'il n'y a malheureusement pas que des bonnes choses dedans :(.
madhack
Messages postés24Date d'inscriptionlundi 28 novembre 2016StatutMembreDernière intervention27 avril 2017 29 nov. 2016 à 22:42
Bonjour et merci pour vos réponses
En ce qui concerne le balisage désolé je ne savais pas mais je ferai de mon mieux à l'avenir pour ne pas oublier.
Pour le std:: je vais le mettre en application maintenant afin de me soumettre à cette rigueur dès le début de mon apprentissage même si les explications sont hors de ma portée pour l'instant.
n'ayant compris que le principe du
qui est surement l'essentiel.
Mon manque de maitrise est flagrant c'est certain je n'ai que mis en application sur quelques exercice les différentes notions vu jusque ici.
Et j'aime bien etoffer certain exercice en metant si possible l'ensemble des notions déja vu, car à force de répétition il y a assimilation.
J'ai un nouveau problème mais je vais l'éditer dans un autre poste
Celui ci étant résolu