2 votes

Vector Subscript ne parvient pas à ajouter des éléments

Après avoir écrit un C++ assez laconique en utilisant l'opérateur sub script, j'ai une petite erreur dans le programme - il n'y a pas de sortie.

Je saisis ceci (Linux)

54 73 89 43 38 90

puis appuyez sur Cntrl + D pour EOF. Le programme ne sort rien et arrête de s'exécuter.

Source :

#include <iostream>
#include <string>
#include <vector>

using std::cin;
using std::vector;
using std::cout;
using std::endl;

int main() {
vector<unsigned> scores(11, 0); //11 buckets, all initially 0
unsigned grade;
while(cin >> grade) //read the grades
{
   if(grade <=100) //handles only valid inputs
  {
   ++scores[grade/10]; //increment counter for the current cluster
  }
 }
}

Je n'ai pas modifié mes paramètres dans VIM, le style de codage est donc légèrement différent. Je ne vois pas ce qui ne va pas, la boucle while est assez standard. Elle lit les notes jusqu'à ce qu'elle trouve que le flux n'est pas valide. Je vérifie ensuite que l'entrée est inférieure à 100 (inclus). Le dernier morceau de code (c'est assez laconique) trouve le bon élément dans le vecteur pour incrémenter le compteur.

J'ai l'impression que c'est peut-être mon entrée qui fait que le programme ne sort pas.

EDIT 1 : J'ai ajouté l'instruction de sortie, je l'ai fait en utilisant le déréférencement de a qui est toujours une référence.

#include <iostream>
#include <string>
#include <vector>

using std::cin;
using std::vector;
using std::cout;
using std::endl;

int main() {
vector<unsigned> scores(11, 0); //11 buckets, all initially 0
unsigned grade;
while(cin >> grade) //read the grades
{
   if(grade <=100) //handles only valid inputs
  {
   ++scores[grade/10]; //increment counter for the current cluster
  }
 }
for(auto it = scores.begin(); it != scores.end(); ++it) {
cout << *it << endl;
 }
}

6voto

NPE Points 169956

J'ai l'impression que c'est peut-être mon entrée qui fait que le programme ne sort pas.

Pas tout à fait. C'est l'absence d'instructions de sortie dans votre programme qui fait qu'il ne sort pas.

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