Char, Tekst występujący najczęściej - C++

0

Cześć.
Mam być może trywialne pytanie, ale jak znaleźć najczęściej występujący tekst (chodzi o char, nie string!).
Przykładowo. Mam ciągi wczytane z pliku: "Mama", "Tata", "Brat" i "Siostra". Występują one np. tak:

Mama
Brat
Siostra
Mama
Tata
Tata
Brat
Siostra
Siostra
Mama
Mama

Tutaj wynikiem powinien być tekst "Mama". Jest na to jakaś funkcja?

5

char to znak. Pojedynczy.

Skorzystaj sobie z mapy string ⟶ int do zliczania wystąpień.

0
kq napisał(a):

char to znak. Pojedynczy.

Skorzystaj sobie z mapy string ⟶ int do zliczania wystąpień.

Nie mogę skorzystać ze stringa. To musi być char.

pasasap napisał(a):

Wujek Google zawsze spoko.
http://www.geeksforgeeks.org/find-the-k-most-frequent-words-from-a-file/

Dłuższego i bardziej niezrozumiałego kodu się nie dało? 🤦

3

Masz na myśli tablicę charów, tak? Bo jeden char to jeden znak. Na pewno oznaczyłeś temat poprawnie (c++)?

0

Oczywiście chodzi mi o tablicę char-ów.

3

Trochę bez sensu - czemu musi być tablica charów?

W każdym razie, możesz ją opakować w strukturę robiącą za string i to traktować jako klucz mapy, reszta koncepcji bez zmian.

0

A nie mógłbym np. posortować tych char-ów tak, że te co występują najczęściej byłyby na początku i to byłby mój wynik? Bo przyznam, że twojego pomysłu nie rozumiem...

5

Tutaj masz przykład: http://melpon.org/wandbox/permlink/ZEWLL8tcuxAOKPPo

	map<string, int> words;
	
	string word;
	while(cin >> word){
		words[word]++;
	}
	
	if(words.size()){
		auto it = max_element(words.cbegin(), words.cend(), [](auto const& l, auto const& r){
			return l.second < r.second;
		});
		DBG(it->first);
		DBG(it->second);
	}
0

Może są do tego takie narzędzia jakie tutaj pokazujesz, ale wykładowca w życiu nie uwierzy, że coś takiego napisałem. Na pewno jest jakiś prosty sposób...

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