Количество вхождений каждого слова в текст

Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain

Ответить
DUXMAN
Сообщения: 2
Зарегистрирован: 02 ноя 2009, 18:18

Задание: а) посчитать и вывести на экран количество вхождений каждого слова в текст, б) вывести 5 наиболее часто встречающихся слов.

Есть строка, разбил её на слова с помощью strtok. Дальше ступор, помогите плз.
Аватара пользователя
Decoder
Сообщения: 308
Зарегистрирован: 19 фев 2008, 23:11
Откуда: Moscow

Стандартной библиотекой классов можно пользоваться?
Если по условию задани нет ограничений на использование библиотек С++, то это элементарно делается с помощью контейнера std::map. Тогда с помощью этого контейнера ты организуешь для каждого слова счётчик его вхождений в строку. Потом можешь отсортировать полученные слова по числу вхождений и взять первые пять слов из отсортированного списка.
Если не осилишь сам, пиши на decoder@hotbox.ru
Поумнеть несложно, куда труднее от дури избавиться.
DUXMAN
Сообщения: 2
Зарегистрирован: 02 ноя 2009, 18:18

нужно именно на Си. Пробовал через strcmp, но ничего толкового не вышло

Код: Выделить всё

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;
}
например из строки "один два два один три один пять" будет выведено "один два два один один", как сделать чтобы это выглядело "один - 3 раза, два - 2 раза" не получается хоть убейте
Аватара пользователя
WinMain
Сообщения: 929
Зарегистрирован: 14 янв 2005, 10:30
Откуда: Москва
Контактная информация:

Тогда придётся сортировать слова прямо внутри строки. Сначала нужно отсортировать слова просто в лексическом порядке. А потом найти самую длинную последовательность одинаковых слов и переместить её в начало строки, дале расположить слова с меньшим количеством вхождений и т.д.
Я понимаю, что говорить и давать советы другим всегда легче, чем самому что-то делать. Но если возникнут проблемы с реализацией алгоритма, обращайся на rychkov@inbox.ru
atavin-ta
Сообщения: 585
Зарегистрирован: 30 янв 2009, 06:38

Нафига сортировать? Двойным циклом и никакаких гвоздёв. Первый цикл по словам. А внём два последовательных. Первый ищет предыдущие вхождения . Если не найдено, то второй считает вхождения. Всё. А сортировка - это способ сделать вид, что ты решаешь другую задачу. Такие проги надо предлагать массаду, а не вопрошайкам.
Вопрос: "Почему вы все сионисты? Нельзя ли писать на чём то другом?".
Ответ: "Писать можно на чём угодно. Но зачем же так себя ограничивать? Пиши на С!".
Ответить