C++ :: Aufgabe #22 :: Lösung #2

4 Lösungen Lösungen öffentlich
#22

Text nach Wörtern untersuchen

Anfänger - C++ von Dome - 29.12.2012 um 01:37 Uhr
Ein Text und das Wort was gesucht werden soll, soll eingegeben werden. Daraufhin soll ausgegeben wie oft das Wort in dem Text vorhanden ist.

Konsolenausgabe:

Eingabe Text: Das ist mein Beispieltext.
Welches Wort soll gesucht werden: ist

Das Wort "ist" wurde 1 mal gefunden.
#2
vote_ok
von Sone (2570 Punkte) - 04.01.2013 um 09:38 Uhr
Schnell hingefrickelt:
Quellcode ausblenden C-Code
#include <string>
#include <iostream>
#include <iterator>
#include <sstream>
#include <algorithm>

template<typename IterT>
size_t count(IterT first1, IterT last1,
             IterT first2, IterT last2)
{
    size_t rval = 0;

    do
        first1 = std::search(first1, last1, first2, last2);
    while( first1 != last1 && (std::advance(first1, std::distance(first2, last2)), ++rval) );

    return rval;
}

template<typename CharT,
          typename CharTraits,
          typename AllocT>
size_t count(std::basic_istream<CharT, CharTraits>& is, std::basic_string<CharT, CharTraits, AllocT> const& str)
{
    size_t rval = 0;
    std::basic_string<CharT, CharTraits, AllocT> tmp;

    do is >> tmp; while( is && ( rval += (tmp == str), true ) );

    return rval;
}

int main()
{
    std::string str;
    std::getline(std::cin, str);
    std::cout << "Zu suchendes Wort: ";
    auto word = *std::istream_iterator<std::string>(std::cin);

    std::istringstream stream(str);
    std::cout << "Die Zeichenfolge \"" << word << "\" kam " << count(str.begin(), str.end(), word.begin(), word.end()) << " mal vor.\n"
                 "Das Wort \"" << word << "\" kam " << count(stream, word) << " mal vor.";
}

Konsolenausgabe:

Dies ist ein Satz in dem Mist steht.
Zu suchendes Wort: ist
Die Zeichenfolge "ist" kam 2 mal vor.
Das Wort "ist" kam 1 mal vor.

Kommentare:

Für diese Lösung gibt es noch keinen Kommentar

Bitte melden Sie sich an um eine Kommentar zu schreiben.
Kommentar schreiben