Ich arbeite gerade an einer Übung aus Accelerated C++:
Schreibe ein Programm, das zählt, wie oft jedes einzelne Wort in seiner Eingabe vorkommt.
Hier ist mein Code:
#include <iostream>
#include <string>
#include <vector>
int main()
{
// Ask for
// and read the input words
std::cout << "Please input your words: " << std::endl;
std::vector<std::string> word_input;
std::string word;
int count = 0;
while (std::cin >> word)
{
word_input.push_back(word);
++count;
}
// Compare the input words
// and output the times of every word compared only with all the words
/***** I think this loop is causing the problem ******/
for (int i = 0; i != count; ++i)
{
int time = 0;
for (int j = 0; j != count; ++j)
{
if (word_input[i] == word_input[j])
++time;
else
break;
}
std::cout << "The time of "
<< word_input[i]
<< " is: "
<< time
<< std::endl;
}
return 0;
}
Wenn Sie dieses Programm kompilieren und ausführen, werden Sie sehen:
Please input your words:
Und ich gebe wie folgt ein:
good good is good
EOF
Dann wird es angezeigt:
The time of good is: 2
The time of good is: 2
The time of is is: 0
The time of good is: 2
Mein erwartetes Ergebnis ist:
The time of good is: 3
The time of is is: 1
Ich möchte keine Karte benutzen, weil ich das noch nicht gelernt habe.
Was ist die Ursache für dieses unerwartete Verhalten, und wie kann ich es beheben?