2 Stimmen

Einzigartige Wortanzahl in C++ Hilfe?

Ich möchte eine Funktion, die die eindeutigen Wörter zählen kann. Zum Beispiel:

"Ich programmiere gerne etwas Nützliches. Und ich esse gerne. Iss jetzt ein Eis."

In diesem Fall, jedes einzelne Wort:

I occurs 2
like occurs 2
...

Ich werde den Fall später ignorieren. Bitte helfen Sie

EDITAR:

Ich habe die Funktionen fertig geschrieben. Es funktioniert perfekt. Vielen Dank für die Hilfe. Sehr viel geschätzt.

2voto

Brian R. Bondy Punkte 325712

Klingt, als wollten Sie eine std::map mit einem Schlüssel String und Daten von int.

Wenn ein Element noch nicht in der Karte vorhanden ist, fügst du es mit einem int-Wert von 1 hinzu. Wenn das Element bereits in der Karte vorhanden ist, addierst du einfach 1 zu seinem zugehörigen Wert.

1voto

Cheers and hth. - Alf Punkte 138555

Ich werde diese Frage als Hausaufgabe behandeln (hoffentlich ist niemand so gedankenlos, vollständigen Code zu präsentieren).

Wenn Sie sich mit einer sehr lockeren Definition von "Wort" begnügen, dann zerlegt iostream input die Eingabe bereits für Sie in Wörter.

Dann verwenden Sie z.B. std::map um einzelne Wörter zu zählen.

Prost & hth.,

1voto

Alexandre C. Punkte 53706

Es ist eine ausgezeichnete Gelegenheit, sich mit Iteratoren und Standardalgorithmen vertraut zu machen.

Es gibt std::istream_iterator die die Liste der Wörter aus einem gegebenen Stream durchläuft, entweder std::cin oder eine Datei oder eine Zeichenkette.

Es gibt std::unique die Ihnen bei Ihrem Ziel helfen können.

Beispielprogramm:

#include <algorithm>
#include <iostream>
#include <vector>

using namespace std;

int main()
{
    istream_iterator<string> begin(cin), end;
    vector<string> tmp;

    copy(begin, end, back_inserter(tmp));
    sort(tmp.begin(), tmp.end());
    vector<string>::iterator it = unique(tmp.begin(), tmp.end());

    cout << "Words:\n";
    copy(tmp.begin(), it, ostream_iterator<string>(cout));
}

Bitte beachten Sie http://www.cplusplus.com für weitere Informationen über die Standardbibliothek.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X