Страница 1 из 1

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

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

Есть строка, разбил её на слова с помощью strtok. Дальше ступор, помогите плз.

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

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

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

Добавлено: 03 ноя 2009, 17:24
DUXMAN
нужно именно на Си. Пробовал через 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 раза" не получается хоть убейте

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

Добавлено: 03 ноя 2009, 18:51
WinMain
Тогда придётся сортировать слова прямо внутри строки. Сначала нужно отсортировать слова просто в лексическом порядке. А потом найти самую длинную последовательность одинаковых слов и переместить её в начало строки, дале расположить слова с меньшим количеством вхождений и т.д.
Я понимаю, что говорить и давать советы другим всегда легче, чем самому что-то делать. Но если возникнут проблемы с реализацией алгоритма, обращайся на rychkov@inbox.ru

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

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