Задание: а) посчитать и вывести на экран количество вхождений каждого слова в текст, б) вывести 5 наиболее часто встречающихся слов.
Есть строка, разбил её на слова с помощью strtok. Дальше ступор, помогите плз.
Количество вхождений каждого слова в текст
Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain
Стандартной библиотекой классов можно пользоваться?
Если по условию задани нет ограничений на использование библиотек С++, то это элементарно делается с помощью контейнера std::map. Тогда с помощью этого контейнера ты организуешь для каждого слова счётчик его вхождений в строку. Потом можешь отсортировать полученные слова по числу вхождений и взять первые пять слов из отсортированного списка.
Если не осилишь сам, пиши на decoder@hotbox.ru
Если по условию задани нет ограничений на использование библиотек С++, то это элементарно делается с помощью контейнера std::map. Тогда с помощью этого контейнера ты организуешь для каждого слова счётчик его вхождений в строку. Потом можешь отсортировать полученные слова по числу вхождений и взять первые пять слов из отсортированного списка.
Если не осилишь сам, пиши на decoder@hotbox.ru
Поумнеть несложно, куда труднее от дури избавиться.
нужно именно на Си. Пробовал через strcmp, но ничего толкового не вышло
например из строки "один два два один три один пять" будет выведено "один два два один один", как сделать чтобы это выглядело "один - 3 раза, два - 2 раза" не получается хоть убейте
Код: Выделить всё
for (i=0; i<nWords; ++i)
{
for (j=0; j<nWords; ++j)
{
if (i!=j && r==0 && strcmp(words[i],words[j])==0)
{
puts (words[i]);
r=1;
}
}
r=0;
}
Тогда придётся сортировать слова прямо внутри строки. Сначала нужно отсортировать слова просто в лексическом порядке. А потом найти самую длинную последовательность одинаковых слов и переместить её в начало строки, дале расположить слова с меньшим количеством вхождений и т.д.
Я понимаю, что говорить и давать советы другим всегда легче, чем самому что-то делать. Но если возникнут проблемы с реализацией алгоритма, обращайся на rychkov@inbox.ru
Я понимаю, что говорить и давать советы другим всегда легче, чем самому что-то делать. Но если возникнут проблемы с реализацией алгоритма, обращайся на rychkov@inbox.ru
Нафига сортировать? Двойным циклом и никакаких гвоздёв. Первый цикл по словам. А внём два последовательных. Первый ищет предыдущие вхождения . Если не найдено, то второй считает вхождения. Всё. А сортировка - это способ сделать вид, что ты решаешь другую задачу. Такие проги надо предлагать массаду, а не вопрошайкам.
Вопрос: "Почему вы все сионисты? Нельзя ли писать на чём то другом?".
Ответ: "Писать можно на чём угодно. Но зачем же так себя ограничивать? Пиши на С!".
Ответ: "Писать можно на чём угодно. Но зачем же так себя ограничивать? Пиши на С!".