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.

1voto

Benjamin Lindley Points 51005

Il suffit d'ajouter une autre variable.

int temp;
while (cin >> temp && V.size() < n){
    V.push_back(temp);
}

1voto

Rohit Points 99
#include<bits/stdc++.h>
using namespace std;

int main()
{
int x,n;
cin>>x;
vector<int> v;

cout<<"Enter numbers:\n";

for(int i=0;i<x;i++)
 {
  cin>>n;
  v.push_back(n);
 }

//displaying vector contents

 for(int p : v)
 cout<<p<<" ";
}

Une manière simple de prendre des données en vecteur.

1voto

r.saiprasad Points 1

Voici les deux méthodes que j'ai essayées. Les deux peuvent être utilisées sans problème.

int main() {

        int size,temp;
        cin>>size;
        vector<int> ar(size);
    //method 1 
      for(auto i=0;i<size;i++)
          {   cin>>temp;
              ar.insert(ar.begin()+i,temp);
          }
          for (auto i:ar) 
            cout <<i<<" "; 

     //method 2
     for(int i=0;i<size;i++)
     {
        cin>>ar[i];
     }

     for (auto i:ar) 
            cout <<i<<" "; 
        return 0;
    }

0voto

Vivek Kumar Singh Points 156

Serait plus facile si vous spécifiez la taille du vecteur en prenant une entrée :

int main()
{
  int input,n;
  vector<int> V;
  cout<<"Enter the number of inputs: ";
  cin>>n;
  cout << "Enter your numbers to be evaluated: " << endl;
  for(int i=0;i<n;i++){
  cin >> input;
  V.push_back(input);
  }
  write_vector(V);
  return 0;
}

0voto

Mallam Awal Points 173

J'ai rencontré un problème similaire et voici comment j'ai procédé. En utilisant et en modifiant votre code de manière appropriée :

   int main()
   {
   int input;
   vector<int> V;
   cout << "Enter your numbers to be evaluated: " 
   << '\n' << "type "done" & keyboard Enter to stop entry" 
   <<   '\n';
   while ( (cin >> input) && input != "done") {
   V.push_back(input);
    }
   write_vector(V);
   return 0;
  }

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