Из введенной строки текста распечатать слова, в порядке убывания частоты повторения. Обязательное условие: Использовать хотя бы одну функцию, связанную со строками Использовать только библиотеки iostream, string
нелепость, @ dantez1337, для решения данной задачи можно использовать функцию `str_word_count()`, которая считает количество слов в строке. Затем, можно использовать функции `array_count_values()` и `arsort()`, чтобы посчитать количество повторений каждого слова и отсортировать массив в порядке убывания частоты повторения. Вот пример кода: $text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed non risus. Suspendisse lectus tortor, dignissim sit amet, adipiscing nec, ultricies sed, dolor."; $words = str_word_count($text, 1); // создаем массив слов из строки $word_counts = array_count_values($words); // считаем количество повторений каждого слова arsort($word_counts); // сортируем массив в порядке убывания частоты повторения foreach ($word_counts as $word => $count) { echo "$word - $count\n"; // выводим слова и их количество повторений } Код $text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed non risus. Suspendisse lectus tortor, dignissim sit amet, adipiscing nec, ultricies sed, dolor."; $words = str_word_count($text, 1); // создаем массив слов из строки $word_counts = array_count_values($words); // считаем количество повторений каждого слова arsort($word_counts); // сортируем массив в порядке убывания частоты повторения foreach ($word_counts as $word => $count) { echo "$word - $count\n"; // выводим слова и их количество повторений } Этот код выведет: sed - 2 dolor - 2 amet - 2 adipiscing - 2 elit - 1 non - 1 risus - 1 suspendisse - 1 lectus - 1 tortor - 1 dignissim - 1 nec - 1 ultricies - 1 Lorem - 1 ipsum - 1 sit - 1 consectetur - 1 Код sed - 2 dolor - 2 amet - 2 adipiscing - 2 elit - 1 non - 1 risus - 1 suspendisse - 1 lectus - 1 tortor - 1 dignissim - 1 nec - 1 ultricies - 1 Lorem - 1 ipsum - 1 sit - 1 consectetur - 1 Надеюсь, это поможет в решении задачи!
#include <iostream> #include <string> #include <sstream> #include <map> using namespace std; int main() { string text, word; map<string, int> rate; getline(cin, text); istringstream s(text); // Заполнение ассоциативного массива: слово - частота в тексте while(!s.eof()){ s >> word; auto search_result = rate.find(word); if(search_result != rate.end()) search_result->second++; else rate[word] = 1; } /* Инвертирование ассоциативного массива (меняем ключ и значение, чтобы массив отсортировался в порядке возрастания частоты) */ multimap<int, string> reverse; for (auto p : rate) reverse.insert(pair<int, string>(p.second, p.first)); // Выводим в обратном порядке (по убыванию частоты) for(auto it = reverse.rbegin(); it != reverse.rend(); ++it) cout << it->first << '\t' << it->second << '\n'; } C #include <iostream> #include <string> #include <sstream> #include <map> using namespace std; int main() { string text, word; map<string, int> rate; getline(cin, text); istringstream s(text); // Заполнение ассоциативного массива: слово - частота в тексте while(!s.eof()){ s >> word; auto search_result = rate.find(word); if(search_result != rate.end()) search_result->second++; else rate[word] = 1; } /* Инвертирование ассоциативного массива (меняем ключ и значение, чтобы массив отсортировался в порядке возрастания частоты) */ multimap<int, string> reverse; for (auto p : rate) reverse.insert(pair<int, string>(p.second, p.first)); // Выводим в обратном порядке (по убыванию частоты) for(auto it = reverse.rbegin(); it != reverse.rend(); ++it) cout << it->first << '\t' << it->second << '\n'; }