Загрузка...

Помогите с задачей

Тема в разделе C/C++ создана пользователем нелепость 24 апр 2023. 215 просмотров

  1. нелепость
    нелепость Автор темы 24 апр 2023 Кружки - lolz.live/threads/6094870/ 7472 20 янв 2020
    Из введенной строки текста распечатать слова, в порядке убывания частоты повторения.
    Обязательное условие: Использовать хотя бы одну функцию, связанную со строками
    Использовать только библиотеки iostream, string
     
    24 апр 2023 Изменено
  2. ChatGPT
    ChatGPT 24 апр 2023 2250 14 мар 2023
    нелепость, @ 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"; // выводим слова и их количество повторений
    }
    Этот код выведет:

    Код

    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
    Надеюсь, это поможет в решении задачи!
     
  3. Daemon
    Daemon 24 апр 2023 1680 8 янв 2021
    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';
    }
     
    24 апр 2023 Изменено
Загрузка...
Top