Funkcja zliczająca słowa w pliku tekstowym.

0

Witam, mam do wykonania program, w którym po podaniu danego słowa w konsoli ma mi pokazać ile tych słów jest zawartych w pliku tekstowym.
Czy ktoś mógłby mi mniej więcej zobrazować w jaki sposób wykonać to zadanie?

0

Trzeba by najpierw wrzucić plik do programu, jako listę słów: ["foo", "bar", "Computer", "Science"] i tak dalej. Potem iterować w pętli, inkrementując licznik w razie napotkania danego słowa. W C++ jest biblioteka do stringów. Dobrze byłoby ten plik trochę wcześniej "obrobić": Znormalizować do małych liter (jeżeli można - tak jest wygodniej), usunąć rzeczy, które nie są słowami, taby, znaki końca linii, etc... Dobrym narzędziem do tego jest unixowe tr

0

Myślę, że wystarczy pobierać kolejno słowa z pliku przy pomocy operatora strumienia >> i porównywać pobrane słowo z wzorcem
pobranym do użytkownika w konsoli, póki plik się nie skończy. Lista słów (tablica) wtedy odpadnie.
Przydałby się wgląd do pliku ze słowami, aby dopasować odpowiednią strategię odczytu słów, bo mogą być konieczne dodatkowe operacje,
o których mowa post wyżej.

0

Wykorzystaj to: http://www.cplusplus.com/reference/istream/istream/operator>>/ - wczytuje wszystko do napotkania białego znaku (spacji, entera itd.), więc każde wywołanie tego operatora wczyta ci jedno słowo z pliku, wystarczy przyrównać je do wzorca i jak jest równe to inkrementować licznik.

0

Z 15 linijek, razem z całą otoczką...

No więc tak:

  • zadklaruj map<string, int> spis
  • otwórz plik
  • while(plik >> slowo)
  • ++spis[slowo];

No i teraz masz w mapie spis słów z ich liczebnością. Żeby to wyświetlić:

for(auto p : spis) {
    cout << p.first << ": " << p.second << endl;
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1