56 votes

Comment introduire des valeurs dans un vecteur

J'essaie de demander à l'utilisateur d'entrer des nombres qui seront poussés dans un vecteur, puis d'utiliser un appel de fonction pour compter ces nombres.

Pourquoi cela ne fonctionne-t-il pas ? Je ne peux compter que le premier nombre.

template <typename T>
void write_vector(const vector<T>& V)
{
   cout << "The numbers in the vector are: " << endl;
  for(int i=0; i < V.size(); i++)
    cout << V[i] << " ";
}

int main()
{
  int input;
  vector<int> V;
  cout << "Enter your numbers to be evaluated: " << endl;
  cin >> input;
  V.push_back(input);
  write_vector(V);
  return 0;
}

0 votes

D'après mon expérience, cin ne capture que le premier token d'une chaîne, donc tout ce qui se trouve après un espace est coupé. Si vous voulez vraiment utiliser cin, lisez chaque variable séparément, ou demandez à l'utilisateur de séparer les valeurs par une virgule et de les analyser. Ou vous pouvez utiliser le tableau argv dans la méthode principale.

3 votes

Avez-vous essayé d'utiliser une variable supplémentaire ? Au lieu d'utiliser n pour la taille et l'entrée temporaire.

3 votes

Vous devriez expliquer ce qui ne fonctionne pas ici.

3voto

Arslan Ahmad Points 862

Vous pouvez simplement le faire avec l'aide de pour la boucle
->Demande d'un utilisateur en cours d'exécution ( le nombre d'entrées qu'il souhaite saisir ) et les traitent comme des tableaux.

int main() {
        int sizz,input;
        std::vector<int> vc1;

        cout<< "How many Numbers you want to enter : ";
        cin >> sizz;
        cout << "Input Data : " << endl;
        for (int i = 0; i < sizz; i++) {//for taking input form the user
            cin >> input;
            vc1.push_back(input);
        }
        cout << "print data of vector : " << endl;
        for (int i = 0; i < sizz; i++) {
            cout << vc1[i] << endl;
        }
     }

3voto

shiva Mirjapur Points 29
#include<iostream>
#include<vector>
#include<string>
using namespace std;
int main()
{
    vector<string>V;
    int num;
    cin>>num;
    string input;
    while (cin>>input && num != 0) //enter any non-integer to end the loop!
{
    //cin>>input;
   V.push_back(input);
   num--;
   if(num==0)
   {
   vector<string>::iterator it;
    for(it=V.begin();it!=V.end();it++)
        cout<<*it<<endl;
   };

}
return 0;

};

2voto

shunbenben Points 21
#include<iostream>
#include<vector>
#include<sstream>
using namespace std;

int main()
{
    vector<string> v;
    string line,t;
    getline(cin,line);
    istringstream iss(line);
    while(iss>>t)
        v.push_back(t);

    vector<string>::iterator it;
    for(it=v.begin();it!=v.end();it++)
        cout<<*it<<endl;
    return 0;
}

1voto

Beginner Points 3096

Dans ce cas, votre while se présentera comme suit

int i = 0;
int a = 0;
while (i < n){
  cin >> a;
  V.push_back(a);
  ++i;
}

1voto

Thom Wiggers Points 2436

La première size() de V sera 0, tandis que int n contiendra n'importe quelle valeur aléatoire parce que vous ne l'initialisez pas.

V.size() < n est probablement fausse.

L'idiot que je suis a raté la "Enter the amount of numbers you want to evaluate: "

Si vous entrez un n qui est plus petit que V.size() à ce moment-là, la boucle se termine.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X