Le programme ci-dessous semble se bloquer à la fin à chaque fois, et je suppose que c'est parce qu'une fois arrivé à i = (taille-1), puis wordList [ i + 1] ne retournera rien, renvoie null, ou quelque chose d'équivalent. De toute façon autour de cela? Ai-je raison de dire que c'est la source de mon problème?Programme d'écrasement de boucle 'for' simple sur l'itération finale
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <iomanip>
using std::cin;
using std::cout; using std::endl;
using std::sort;
using std::string; using std::vector;
// Obtain a list of words and return the de-duped list
// with an accompanying word count
int main()
{
cout << "Enter a series of words separated by spaces, "
"followed by end-of-file: ";
vector<string> wordList;
string x;
while (cin >> x)
wordList.push_back(x);
typedef vector<string>::size_type vec_sz;
vec_sz size = wordList.size();
if (size == 0) {
cout << endl << "This list appears empty. "
"Please try again." << endl;
return 1;
}
sort(wordList.begin(), wordList.end());
cout << "Your word count is as follows:" << endl;
int wordCount = 1;
for (int i = 0; i != size; i++) {
if (wordList[i] == wordList[i+1]) {
wordCount++;
}
else {
cout << wordList[i] << " " << wordCount << endl;
wordCount = 1;
}
}
return 0;
}
Super machielo. On dirait que vous avez pris mes deux soucis - le problème des hors limites ainsi que la façon d'attraper le dernier mot de la liste. Le simple passage à 'i
IanWhalen
Je suis content que vous l'ayez trouvé utile :) – AntonioMO