Задать вопрос
@Orangeek

Найти самое часто встречающееся слово в тексте. Ввод слов в динамический массив. Как сделать без map?

Задача: Найти самое часто встречающееся слово в тексте, при подсчёте игнорируя слова из первой строки.
Есть идея, что надо занести слова из первой строки в массив, чтобы, например, words[n][i] - n-ное слово строки. Далее, занести все остальные слова, не совпадающие ни с одним из первого массива, во второй такой же массив, и уже в нём подсчитать самое часто встречающееся слово.
Честно, буду рад любым идеям и коду, потому что плохо представляю, как это сделать без map и на чистом си.
  • Вопрос задан
  • 1372 просмотра
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 4
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
как это сделать без map и на чистом си

Это же очевидно, надо написать свою реализацию map на чистом C.
А по алгоритму - быстрее может оказаться сначала найти частоты всех слов, а уже потом исключить слова из первой строки.
Ответ написан
vt4a2h
@vt4a2h
Senior software engineer (C++/Qt/boost)
Найти/сделать ассоциативный контейнер. Думаю, реализаций деревьев бинарного поиска на С предостаточно. Ещё можно простую хэш-таблицу на коленке сделать, наверно это даже проще. Просто с обычным линейным поиском по массиву у вас очень долго программа работать будет.
Если реальный проект, а не просто задача для саморазвития, то однозначно искать готовые реализации.
Ответ написан
Комментировать
@res2001
Developer, ex-admin
Используйте хэш-таблицу, например khash из состава klib, там же есть и другие структуры. Библиотека написана на Си.
Ответ написан
Комментировать
dio4
@dio4
team leader, system engineer, master of sports
Обратите внимание на функцию char * strstr( const char * string1, const char * string2 );
тут
Никаких сложностей не нужно. Стандартная функция си - описана в string.h
Искомыми подстроками будут слова из 1-й строки и тд.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы