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;
}
}