Wörter in einem String zählen?
-
Hallo, ich komme mit ner Buchaufgabe nicht weiter.
string line1 = "We were her pride of 10 she named us:"; string line2 = "Benjamin, Phoenix, the Prodigal"; string line3 = "and persicacious pacific Suzanne"; string sentence = line1 + ' ' + line2 + ' ' + line3;Ich soll hier die Wörter in sentence zählen und danach die Größten und kleinsten ausgeben.
Ich habe bisher im Buch nichts derartiges gelernt welches mir die Problematik effizient lösen lassen könnte.
Wenn dann hätte ich es mir so vorgestellt mit substr jeweils die Position am Anfang eines Wortes bis zum nächsten Leerzeichen zu trennen und dann per push back z.B. in einen Vector zu speichern und natürlich zu inkrementieren. Allerdings wäre der Code dadurch extrem unübersichtlich und unsauber meiner Meinung nach.
Hoffe mir kann jemand helfen.
Wizzard
-
wenn der schreiber keine doppelleerzeichen macht, reicht es, die leerzeichen zu zählen und eine zeile hat ein wort mehr als leerzeichen.
ein absatz hat so viel wörter wie dessen zeilen.was ist der größte? ahh, der, der bei > gewinnt.
die suchemaximumschleife geht glaub ich immer so:foreach s in strings if s>max max=s
-
#include <iostream> using namespace std; //ACHTUNG: Nur grob. Am Anfang dürfen keinen Leerzeichen sein, und doppelte leerzeichen dürfen auch nicht vorkommen! int main() { string line1 = "We were her pride of 10 she named us:"; string line2 = "Benjamin, Phoenix, the Prodigal"; string line3 = "and persicacious pacific Suzanne"; string sentence = line1 + ' ' + line2 + ' ' + line3; int counter = 0; for(string::size_type i = 0; i < sentence.size(); ++i) { if(sentence[i] == ' ') { ++counter; } } ++counter; //lezte Zeile fehlt ja leerzeichen nach Suzanne cout << "Words: " << counter << endl; return 0; }MfG
Stromberg
-
danke für die lösung aber wie löse ich nun das problem mit den größten, bzw. kleinsten wörtern?
-
wizzard schrieb:
danke für die lösung aber wie löse ich nun das problem mit den größten, bzw. kleinsten wörtern?
was ist der größte? ahh, der, der bei > gewinnt.
die suchemaximumschleife geht glaub ich immer so:foreach s in strings if s>max max=s[/quote]