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?
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
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.
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.
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 map
ie spis słów z ich liczebnością. Żeby to wyświetlić:
for(auto p : spis) {
cout << p.first << ": " << p.second << endl;
}