2 votes

Problèmes et carte des terminaux d'entrée

J'utilise la carte pour compter l'occurrence des mots. Voici le code.

#include <iostream>
#include <map>
#include <string>
using namespace std;
int main() {
    map<string,int>wordcount;
    string s;

    while (cin>> s && s!="red")
        ++wordcount[s];

    while (cin>>s &&  s!="red")

    cout << s << "   " << wordcount[s] << endl;
    return 0;
}

Je lance le programme, je tape des mots et à la dernière ligne j'entre le mot "rouge", mais cela ne fait rien. Ensuite, je tape "rouge" une deuxième fois et il sort :

appuyez sur n'importe quelle touche pour continuer

Qu'est-ce qui ne va pas ?

1voto

KennyTM Points 232647

Rien ne va plus. Visual Studio va automatiquement PAUSE le programme avant qu'il ne se termine pour empêcher la fermeture de la fenêtre de la console, lorsque vous "Exécuter sans déboguer".

1voto

Igor Oks Points 9737

Je comprends que vous voulez recevoir une liste de mots, inscrire le nombre d'occurrences de chaque mot dans une carte et l'imprimer.

Donc, au lieu de la deuxième boucle while, vous devez itérer sur la carte que vous avez créée et imprimer le compte pour chaque mot.

Vous pouvez apprendre aquí comment imprimer le contenu de la carte.

0voto

Mattias Nilsson Points 2269

Trop groggy pour écrire ici, mais je vais essayer une deuxième fois. :)

Si vous écrivez beaucoup de mots, il les comptera jusqu'à ce que vous écriviez "rouge". La deuxième boucle imprimera le compte des mots que vous avez entrés, mais si vous écrivez "rouge" tout de suite, le programme s'arrêtera simplement sans rien imprimer.

Essayez d'exécuter le programme avec l'entrée suivante :

one
two
two
red
zero
one
two
red

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